91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析python二叉樹非遞歸版后序遍歷

發布時間:2021-12-13 15:57:18 來源:億速云 閱讀:214 作者:柒染 欄目:大數據

今天就跟大家聊聊有關如何分析python二叉樹非遞歸版后序遍歷,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

二叉樹的非遞歸版后序遍歷,首先定義TreeNode如下:

"""

TreeNode class

"""

class TreeNode(object):

    #constructor

    def __init__(self, val):

        self.val = val

        self.right = None

        self.left = None

    val = 0

    right = None

    left = None

非遞歸后序遍歷思路:

cur指針指向當前正遍歷到的節點,如果,

滿足情況1:不為None,且左孩子不為None,則沿著左側一直遍歷,直到不滿足條件;

如不滿足情況1,說明要么cur為None,或者左孩子為None,不管哪種情況,都先拿出stack中的最后一個元素,又細分為兩種情況:

1. cur的右孩子不為None,且未訪問過,則伸向cur的右子樹遍歷

2. 若不滿足(要么cur沒有右孩子,要么右孩子訪問過),不論哪種情況,都要訪問cur節點了,訪問后出棧,標記它為訪問過,同時當前訪問的元素置為None。


python代碼實現如下:

"""

post order using stack for binary tree

"""

def postOrderUsingStack(node=None):

    visits=[]

    stack = []

    if node is None:

        return

    stack.append(node)

    cur = node

    visited=None


    while len(stack)>0:

        if cur is not None and cur.left is not None:

            stack.append(cur.left)

            cur = cur.left

        else:

            cur =stack[-1]

            # right child for current node is not None and is not visited

            if cur.right is not None and cur.right!=visited:

                cur=cur.right

                stack.append(cur)

            else:

                # do a visit

                visits.append(cur.val)

                stack.pop()

                visited = cur

                cur=None

    return visits


單測試如下:

root = TreeNode(1)

root.left=TreeNode(2)

root.left.left = TreeNode(4)

root.right = TreeNode(3)

vals = postOrderUsingStack(root)

print(vals)

后序遍歷的結果如下:

如何分析python二叉樹非遞歸版后序遍歷

看完上述內容,你們對如何分析python二叉樹非遞歸版后序遍歷有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东宁县| 栾川县| 十堰市| 呈贡县| 吉木萨尔县| 格尔木市| 松潘县| 赤峰市| 博湖县| 内黄县| 罗山县| 定安县| 报价| 舒城县| 石渠县| 望都县| 彭州市| 乃东县| 晋中市| 舞阳县| 旺苍县| 安岳县| 台前县| 林州市| 泰来县| 突泉县| 尼勒克县| 武定县| 双流县| 石城县| 鱼台县| 大英县| 晋中市| 东丰县| 深州市| 尉氏县| 渭源县| 台湾省| 泰来县| 武强县| 辽源市|