1. 程式人生 > 實用技巧 >LeetCode 107. 二叉樹的層次遍歷 II

LeetCode 107. 二叉樹的層次遍歷 II

107. 二叉樹的層次遍歷 II

Difficulty: 簡單

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)

例如:
給定二叉樹 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其自底向上的層次遍歷為:

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

Solution

Language: 全部題目

這是一道102. 二叉樹的層序遍歷的變種題目,如果之前做過這道題應該很簡單,只需要注意把返回的結果也剛到一個佇列裡面,就能保證是從底部往上遍歷的。

# Definition for a binary tree node.
# class TreeNode:
#   def __init__(self, x):
#     self.val = x
#     self.left = None
#     self.right = None
from collections import deque
class Solution:
  def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
    if not root: return []
    
    queue, resQueue = deque([root]), deque()
    while queue:
      curLevel, size = [], len(queue)
      for i in range(size):
        node = queue.popleft()
        if node.left:
          queue.append(node.left)
        if node.right:
          queue.append(node.right)
        curLevel.append(node.val)
      resQueue.appendleft(curLevel)
    return list(resQueue)