Leetcode 107. 二叉树的层次遍历 II(Binary Tree Level Order Traversal II)

Leetcode 107. 二叉树的层次遍历 II

1 题目描述(Leetcode题目链接)

  给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:给定二叉树 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7

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

[
  [15,7],
  [9,20],
  [3]
]

2 题解

  二叉树的层次遍历倒过来输出。。

# 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]]:
        if not root:
            return []
        queue = []
        queue.append(root)
        retv = []
        while queue:
            num = len(queue)
            clevel = []
            while num > 0:
                curr = queue.pop(0)
                clevel.append(curr.val)
                if curr.left:
                    queue.append(curr.left)
                if curr.right:
                    queue.append(curr.right)
                num -= 1
            retv.append(clevel)
        return retv[::-1]

你可能感兴趣的:(Leetcode,leetcode,算法)