1. 程式人生 > >【LeetCode 簡單題】21-二叉樹的層次遍歷 II

【LeetCode 簡單題】21-二叉樹的層次遍歷 II

宣告:

今天是第21道題。給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除

(手動比心ღ( ´・ᴗ・` ))

正文

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

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

    3
   / \
  9  20
    /  \
   15   7

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

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

解法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, level, result, node):
        if node:
            if level > len(result):
                result.insert(0,[])

            result[-level].append(node.val)
            self._levelOrderBottom(level+1, result, node.left)
            self._levelOrderBottom(level+1, result, node.right)
    def levelOrderBottom(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        level, result = 1, list()        
        self._levelOrderBottom(level, result, root)
        return result

結尾