题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:如果根节点为空,直接返回一个空列表即可
如果不为空,我们可以设置一个循环,此时进入循环,
我们需要两个列表,一个记录当前层需要输出的元素,另一个记录下一层的节点(用条件判断,当左右子树存在的时候就记录下来)
记得更新循环条件,循环体外用一个列表记录下当前层的元素,当其为空时候,不进入while循环,内部因为一层可能有多个元素,可以再用一个for循环
还有每次循环结束时,返回当前层的元素,达到每一层输出一行的效果。
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回二维列表[[1,2],[4,5]] def Print(self, pRoot): # write code here if not pRoot: return [] a=[pRoot] b=[] while a: c=[] d=[] for i in a: d.append(i.val) if i.left: c.append(i.left) if i.right: c.append(i.right) a = c b.append(d) return b