题目描述
从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。
样例
思路
首先要想到这是二叉树的层次遍历(也称为广度优先遍历BFS)。
利用队列可以实现二叉树的层次遍历,而此题是需要按层输出遍历结果,故需要记录每层的遍历结果。
直接上代码。
代码实现
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def printFromTopToBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if root is None:
return []
queue = [root]
res = []
while queue: # 这里实际上还是利用的队列的思想
level = [] # 这个用于记录每一层的遍历结果
new_queue = [] # 这个用于记录下一层的节点
for cur in queue: # 在遍历队列时是从头往后的
level.append(cur.val)
if cur.left is not None:
new_queue.append(cur.left)
if cur.right is not None:
new_queue.append(cur.right)
queue = new_queue # 更新节点队列
res.append(level)
return res