题解 | #从上往下打印二叉树#

从上往下打印二叉树

http://www.nowcoder.com/questionTerminal/7fe2212963db4790b57431d9ed259701

不同于前序遍历、中序遍历等,本题需要按照层级从上往下打印,同层级从左往右,可以看出使用BFS算法求解。由于需要使用一个列表存储顺序,递归暂时没有想到可以解决的办法,因此想到使用队列的数据结构,通过它先进先出的特性,将该树存入队列中,每一次遍历时将其非空左右子树推入到队列中,并将本身在循环末尾推出队列,当该队列为空时,则遍历完成。以下是Python代码:

class Solution:
    # 返回从上到下每个节点值列表,例:[1,2,3]
    def PrintFromTopToBottom(self, root):
        # write code here
        res = []
        if not root:
            return res
        queue = [root]
        while queue:
            res.append(queue[0].val)
            if queue[0].left:
                queue.append(queue[0].left)
            if queue[0].right:
                queue.append(queue[0].right)
            queue.pop(0)
        return res
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务