题解 | #把二叉树打印成多行#
把二叉树打印成多行
http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288
二叉树的每一个节点包含左右子节点,分别取栈、层、最终列表三个空内容。
每次需要清空层的内容,在放入父节点后,腾出位置放左右节点的输入
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
if not pRoot: return[]
stack = [pRoot]
tmp =[]
res =[]
while stack:
tmp=[] //这里我踩坑了,没有清空,导致后面每一层都输出了一样的结果
for i in range(len(stack)):
node = stack[0]
tmp.append(node.val)//append它节点的值
stack = stack[1:]//做减法
# res.append(tmp)
if node.left ://左节点
stack.append(node.left)
# res.append(tmp)
if node.right://右节点
stack.append(node.right)
# tmp.append(stack)
res.append(tmp)//汇总
return res
# write code here