1.要求
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
2.思想及代码片
思想和前一篇差不多,就是在将中间列表插入到res 最终结果表中时候总把后面的插入到前面(或者直接append,最终返回res[::-1])。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
res=[]
if not root:
return res
tmp=[root]
while tmp:
p=[]
for i in range(len(tmp)):
r=tmp.pop(0)
if r.left:
tmp.append(r.left)
if r.right:
tmp.append(r.right)
p.append(r.val)
# res.insert(0,p)
# return res
res.append(p)
return res[::-1]
参考:
https://blog.csdn.net/weixin_41781408/article/details/89060666