题目
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
方法一:非递归法
def Print(self, pRoot):
# write code here
if pRoot==None:#判断边界条件
return []
stack=[pRoot]#建立一个栈存储该层的结点
res=[]#建立一个列表存储结果
while stack:
tmp=[]#建立一个列表存储遍历该栈后的结果
nextstacck=[]#建立一个栈存储下一个层的结点
for i in stack:
tmp.append(i.val)
if i.left:
nextstack.append(i.left)
if i.right:
nextstack.append(i.right)
stack=nextstack
res.append(tmp)
return res
方法二:递归法
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
# write code here
result = []
def align(root, depth):
if root:
if len(result)<depth:
result.append([])
result[depth-1].append(root.val)
align(root.left, depth + 1)
align(root.right, depth + 1)
align(pRoot,1)
return result