真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

刷題系列-Python中怎么通過非遞歸實現二叉樹前序遍歷

這期內容當中小編將會給大家?guī)碛嘘P刷題系列 - Python中怎么通過非遞歸實現二叉樹前序遍歷,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯建站主營臨翔網站建設的網絡公司,主營網站建設方案,app軟件開發(fā),臨翔h5微信平臺小程序開發(fā)搭建,臨翔網站營銷推廣歡迎臨翔等地區(qū)企業(yè)咨詢

二叉樹前序遍歷(Binary Tree Preorder Traversal), 前序遍歷首先訪問根結點然后遍歷左子樹,最后遍歷右子樹。

如下圖所示,前序遍歷結果:ABDECF

刷題系列 - Python中怎么通過非遞歸實現二叉樹前序遍歷

考慮了下,要創(chuàng)建兩個隊列,一個放遍歷結果,一個做類似棧作用,把路過節(jié)點放入;如果當前節(jié)點左邊節(jié)點存在,讀取值并放入棧繼續(xù)去下個左節(jié)點, 如果沒有左邊節(jié)點則去右節(jié)點,同樣操作;如果都沒有,則棧彈出最后一個節(jié)點,刪除關聯,并把棧中上一個節(jié)點作為當前節(jié)點,相當于返回走。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        traversalList = []
        nodeList = []
        # add the first one to node list, and travel from left node first, then right; if a node without left   #and righ sub-node, pop it from node list, then remove the link with parent node; traverlous finish as root list #is empty.
        if root != None:
            traversalList.append(root.val)
            nodeList.append(root)
            currentNode = root
            while nodeList != []:
                if currentNode.left != None:
                    currentNode = currentNode.left
                    traversalList.append(currentNode.val)
                    nodeList.append(currentNode)
                elif currentNode.right != None:
                    currentNode = currentNode.right
                    traversalList.append(currentNode.val)
                    nodeList.append(currentNode)
                else:
                    nodeList.pop()
                    if nodeList != []:
                        if nodeList[-1].right == currentNode:
                            nodeList[-1].right = None
                        elif nodeList[-1].left == currentNode:
                            nodeList[-1].left = None
                        currentNode = nodeList[-1]
        return traversalList

上述就是小編為大家分享的刷題系列 - Python中怎么通過非遞歸實現二叉樹前序遍歷了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。


名稱欄目:刷題系列-Python中怎么通過非遞歸實現二叉樹前序遍歷
標題來源:http://weahome.cn/article/pcjccd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部