题解 | #从上往下打印二叉树#
从上往下打印二叉树
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