【LeetCode 簡單題】21-二叉樹的層次遍歷 II
阿新 • • 發佈:2018-12-10
宣告:
今天是第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