《剑指Offer》刷题之把二叉树打印成多行
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 - 示例:
示例 1 :
输入:{8,6,10,5,7,9,11}
返回值:[[8],[6,10],[5,7,9,11]]
class Solution:
def Print(self, pRoot):
if not pRoot:
return []
stack = [pRoot]
result = []
while stack:
temp_res = []
temp_stack = []
for i in stack:
temp_res.append(i.val)
if i.left:
temp_stack.append(i.left)
if i.right:
temp_stack.append(i.right)
stack = temp_stack
result.append(temp_res)
return result
- 算法说明:
建立列表stack
存储树的节点,建立列表result
存储返回结果;
当节点矩阵stack
不为空的时候,遍历所有元素;
将父节点的值暂时存入temp_res
,将左右子树节点存入temp_stack
;
更新stack
和result
;
返回结果result
。