题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印
输入输出示例
输入:{5,4,#,3,#,2,#,1}
返回值:[5,4,3,2,1]
解题思路
- 初始化:一个队列queue, 将root节点入队列queue中
- 如果队列不空,做如下操作:
- 弹出队列头,保存为node,将node的左右非空孩子加入队列
- 做2,3步骤,直到队列为空
代码示例
# coding;utf-8
class TreeNode():
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def PrintFromTopToBottom(self, root):
if root == None:
return []
# 定义辅助空间,将根节点放入辅助空间
queue = []
queue.append(root)
# 定义空数组,用来存储结果值
result = []
if queue:
# 去除辅助空间的第一个节点,即为当前遍历的根节点
tempNode = queue.pop(0)
#将该节点的值存入result中
result.append(tempNode.val)
# 接着要往下遍历,判断该节点是否存在左右子树
# 如果存在,将该节点的左右结点存入辅助空间中
if tempNode.left:
queue.append(tempNode.left)
if tempNode.right:
queue.append(tempNode.right)
# 每一次存入结果数组的结点,要从辅助空间中的第一个位置删除,
# del temp[0]
return result