Skip to the content.

leetcode [107] 二叉树的层次遍历 II


Contact me:

Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub


给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如: 给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其自底向上的层次遍历为:

[
  [15,7],
  [9,20],
  [3]
]
class Solution:  
    def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
        if root is None: return []
        ans = []
        def levelorder(level):
            if not level:
                return
            newlevel = []
            nonlocal ans
            for lev in level:
                if lev.left:
                    newlevel.append(lev.left)
                if lev.right:
                    newlevel.append(lev.right)
            levelorder(newlevel)
            cur_ans = [lev.val for lev in level]
            ans.append(cur_ans)
        levelorder([root])
        return ans