【题目】从上往下打印出二叉树的每个节点,同层节点从左至右打印。
【思路】本题是前序遍历二叉树,借助一个辅助列表,先将根节点放到结果列表中,然后然后对根节点判断是否有左右节点,将其左右节点放入辅助列表中,此时根节点处理过了将其删除,接着处理左节点,放到结果列表中,判断其子节点,依次往复,知道辅助列表为空。
【代码实现】
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
# write code here
if root == None:
return []
sub_list = [root]
res = []
while sub_list:
tmpNode = sub_list[0]
res.append(tmpNode.val)
if tmpNode.left:
sub_list.append(tmpNode.left)
if tmpNode.right:
sub_list.append(tmpNode.right)
del sub_list[0]
return res