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

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

刷題系列-Python中怎么通過非遞歸實現(xiàn)二叉樹前序遍歷-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沾化,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

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

如下圖所示,前序遍歷結(jié)果:ABDECF

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

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

# 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中怎么通過非遞歸實現(xiàn)二叉樹前序遍歷了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。


本文題目:刷題系列-Python中怎么通過非遞歸實現(xiàn)二叉樹前序遍歷-創(chuàng)新互聯(lián)
瀏覽路徑:http://weahome.cn/article/codoee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部