LeetCode 107 [Binary Tree Level Order Traversal II]

原題

給出一棵二叉樹(shù),返回其節(jié)點(diǎn)值從底向上的層次序遍歷(按從葉節(jié)點(diǎn)所在層到根節(jié)點(diǎn)所在的層遍歷,然后逐層從左往右遍歷)

給出一棵二叉樹(shù) {3,9,20,#,#,15,7}

    3
   / \
  9  20
    /  \
   15   7

按照從下往上的層次遍歷為:

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

解題思路

  • 本題與[Binary Tree Level Order Traversal I]一樣,同樣使用一個(gè)queue解決,只是在生成result的時(shí)候不是append而是insert(0, temp)
  • 每次從見(jiàn)面加入temp結(jié)果

完整代碼

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
import Queue

class Solution(object):
    def levelOrderBottom(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if not root:
            return []
            
        result = []
        MyQueue = Queue.Queue()
        MyQueue.put(root)
        while not MyQueue.empty():
            temp = []
            size = MyQueue.qsize()
            for i in range(size):
                node = MyQueue.get()
                if node.left:
                    MyQueue.put(node.left)
                if node.right:
                    MyQueue.put(node.right)
                temp.append(node.val)
            result.insert(0, temp)
            
        return result
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容