選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

DSA 中序遍歷


二叉樹的中序遍歷

中序遍歷是一種深度優先搜尋(DFS),其中每個節點按照特定順序訪問。在此處 閱讀更多關於二叉樹遍歷的內容

執行下面的動畫,檢視二叉樹的中序遍歷是如何完成的。

R A B C D E F G

結果

中序遍歷會遞迴地遍歷左子樹,然後訪問根節點,最後遞迴地遍歷右子樹。這種遍歷主要用於二叉搜尋樹,在這種樹中,它會按升序返回值。

該遍歷之所以被稱為“中”序,是因為節點是在遞迴函式呼叫“之間”被訪問的。節點在左子樹的中序遍歷之後,右子樹的中序遍歷之前被訪問。

中序遍歷的程式碼如下所示

示例

Python

def inOrderTraversal(node):
    if node is None:
        return
    inOrderTraversal(node.left)
    print(node.data, end=", ")
    inOrderTraversal(node.right)
執行示例 »

inOrderTraversal() 函式會不斷地用當前左子節點作為引數呼叫自身(第 4 行),直到該引數為 None,然後函式返回(第 2-3 行)。

第一次引數 nodeNone 的情況是當 C 節點的左子節點被作為引數傳遞時(C 沒有左子節點)。

之後,節點 C 的 data 部分被列印(第 5 行),這意味著“C”是第一個被列印的內容。

然後,將節點 C 的右子節點作為引數傳遞(第 6 行),該引數為 None,因此函式呼叫在不執行任何其他操作的情況下返回。

在列印“C”之後,先前的 inOrderTraversal() 函式呼叫繼續執行,因此“A”被列印,然後是“D”,接著是“R”,以此類推。



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援