从上往下打印出二叉树的每个节点,同层节点从左至右打印。
例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7
解题思路
使用队列来进行层次遍历。
不需要使用两个队列分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
# write code here
res = []
q = []
if root==None:
return []
q.append(root)
while q:
tmp = q.pop(0)
if tmp.left:
q.append(tmp.left)
if tmp.right:
q.append(tmp.right)
res.append(tmp.val)
return res
把二叉树打印成多行
加上一个循环,控制pop同一层的节点
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
# write code here
res = []
q = []
if pRoot==None:
return []
q.append(pRoot)
while q:
le =[]
for i in range(len(q)):
tmp = q.pop(0)
if tmp.left:
q.append(tmp.left)
if tmp.right:
q.append(tmp.right)
le.append(tmp.val)
res.append(le)
return res