题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return int整型二维数组
#
class Solution:
    def Print(self , pRoot: TreeNode) -> List[List[int]]:
        # write code here
        result = []
        if not pRoot:
            return result
        left_to_right = True  # 初始化设置为True
        queue = [pRoot]
        while queue:
            temp = []
            tempresult = []
            for node in queue:  # 也是从第一层即根节点开始遍历的
                tempresult.append(node.val) # 临时存储每一层的节点值
                if node.left:
                    temp.append(node.left)
                if node.right:
                    temp.append(node.right)
            queue = temp
            if left_to_right: # 若该层flag为真则顺序存储节点值
                result.append(tempresult)
            else: # 若该层flag为假则倒序存储节点值
                result.append(tempresult[::-1])
            left_to_right = not left_to_right # 本层结束后反转flag,为下一层做准备
        return result

在第一题的基础上多了一步操作,第一题考察对二叉树的遍历,第二题则多了一个用列表保存每一层的节电值,并且多了一个flag符号用来判断每一层的访问顺序。

全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务