题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:如果根节点为空,直接返回一个空列表即可
如果不为空,我们可以设置一个循环,此时进入循环,
我们需要两个列表,一个记录当前层需要输出的元素,另一个记录下一层的节点(用条件判断,当左右子树存在的时候就记录下来)
记得更新循环条件,循环体外用一个列表记录下当前层的元素,当其为空时候,不进入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
原文:https://www.cnblogs.com/cong3Z/p/12940195.html