题目分析:
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],
返回其自底向上的层次遍历为:
[[15,7], [9,20],[3]]
解题思路:
这一题与【LeetCode】102. Binary Tree Level Order Traversal思路相同,就是递归中序遍历,并且记录层数就可以了,可以参考【LeetCode】102. Binary Tree Level Order Traversal。
提交代码:(递归,Runtime: 36 ms, faster than 99.35% )
class Solution:
def levelOrderBottom(self, root: TreeNode) -> 'List[List[int]]':
def preorder(root, level, res):
if root:
if len(res) <= level: res.insert(0, [])
res[- ( level + 1 )].append(root.val)
preorder(root.left, level + 1, res)
preorder(root.right, level + 1, res)
res = []
preorder(root, 0, res)
return res