選單
×
   ❮   
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 前序遍歷


二叉樹的前序遍歷

前序遍歷是一種深度優先搜尋,其中每個節點按特定順序訪問。在此處閱讀有關二叉樹遍歷的更多資訊:此處

二叉樹的前序遍歷如下所示

R A B C D E F G

結果

前序遍歷首先訪問根節點,然後遞迴地對左子樹進行前序遍歷,接著對右子樹進行遞迴前序遍歷。它用於建立樹的副本、表示式樹的字首表示等。

這種遍歷是“前序”的,因為在遞迴地對左右子樹進行前序遍歷“之前”訪問節點。

這是前序遍歷的程式碼示例

示例

Python

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

要列印的第一個節點是節點 R,因為前序遍歷的工作方式是首先訪問或列印當前節點(第 4 行),然後遞迴呼叫左右子節點(第 5 行和第 6 行)。

preOrderTraversal() 函式會遞迴地遍歷左子樹(第 5 行),然後再遍歷右子樹(第 6 行)。因此,接下來列印的節點是“A”,然後是“C”。

當節點 C 的左子節點作為引數傳入時(C 沒有左子節點),引數 node 第一次為 None

第一次呼叫 C 的左子節點返回 None 後,C 的右子節點也返回 None,然後遞迴呼叫繼續反向傳播,以便 A 的右子節點 D 成為下一個要列印的節點。

程式碼繼續反向傳播,以便列印 R 右子樹中的其餘節點。



×

聯絡銷售

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

報告錯誤

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

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

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