上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
输入:{8,6,10,5,7,9,11}
输出:[[8],[6,10],[5,7,9,11]]
思路一: 定义队列储存current当前节点,next_layer储存当前节点的子节点,current临时存储每一行的数据,并将下一行数据存储在next_layer,然后将结果append到result里,再输进新的数据。
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
# write code here
if not pRoot:
return []
current = [pRoot]
next_layer = []
result = []
while current:
for i in current:
if i.left:
next_layer.append(i.left)
if i.right:
next_layer.append(i.right)
result.append([i.val for i in current])
current,next_layer = next_layer,[]
return result
思路二: 思路一的更精简的写法
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
# write code here
if not pRoot:
return []
q = [pRoot]
res = []
while q:
res.append([elem.val for elem in q])
q=[leaf for node in q for leaf in (node.left,node.right) if leaf]
return res