LeetCode解題之Binary Tree Level Order Traversal II
原題
實作樹的廣度優先周遊的倒序周遊,即從最底層依次向上周遊,每一層上的資料按照從左到右的順序排列。
注意點:
- 無
例子:
輸入:
3
/ \
9 20
/ \
15 7
輸出:
[
[,],
[,],
[]
]
解題思路
直接複用了 Binary Tree Level Order Traversal 的代碼,隻是最後把序列翻轉了。
AC源碼
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
result = []
if not root:
return result
curr_level = [root]
while curr_level:
level_result = []
next_level = []
for temp in curr_level:
level_result.append(temp.val)
if temp.left:
next_level.append(temp.left)
if temp.right:
next_level.append(temp.right)
result.append(level_result)
curr_level = next_level
result.reverse()
return result
if __name__ == "__main__":
None
歡迎檢視我的Github (https://github.com/gavinfish/LeetCode-Python) 來獲得相關源碼。