刷題系列 - Python實現二叉樹按層級遍歷

張國平發表於2020-01-17

繼續刷題,刷題果然會上癮。


Python實現二叉樹按層級遍歷,看起來有點複雜。如下圖,如果一個二叉樹有多層,則從上到下,每層按從左到右遍歷。

每層放在一個佇列,整體返回一個多組佇列的佇列。

看起來複雜,其實實現反而很簡單;不用棧,就用一個節點佇列放當前層級節點,遍歷當前層級節點,讀取值放入一個讀取佇列,讀取當前節點的子節點放入另一個佇列;噹噹前佇列節點遍歷完成後,使用下一層節點對用,相當於進入下一層,遍歷剛剛生成子節點佇列,如此反覆直到節點佇列為空結束。

程式碼如下

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        traversalList = []
        nodeList = []
        if root != None:
            nodeList.append(root)
            while nodeList != []:
                currentLevelVal = []
                currentNodeList = []
                for node in nodeList:
                    currentLevelVal.append(node.val)
                    if node.left != None:
                        currentNodeList.append(node.left)
                    if node.right != None:
                        currentNodeList.append(node.right)
                traversalList.append(currentLevelVal)
                nodeList = currentNodeList
        return traversalList


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2673802/,如需轉載,請註明出處,否則將追究法律責任。

相關文章