给定一个二叉树,返回其节点值自底向上的层次遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)【Leetcode-107】
例如:给定二叉树[3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回其自底向上的层次遍历为:
[[15,7], [9,20], [3]]
思路:自顶向下利用队列进行BFS,结果队列0处插入
Python解法:
queue = []
cur = [root]
while cur:
cur_layer_val = []
next_layer_node = []
for node in cur:
if node:
cur_layer_val.append(node.val)
next_layer_node.extend([node.left, node.right])
if cur_layer_val:
queue.insert(0, cur_layer_val)
cur = next_layer_node
print(queue)