[英]Binary Tree Double Order Traversal
任何人都可以向我解釋雙順序遍歷嗎?
A
/ \
B E
/ \ / \
C D F G
雙順序遍歷輸出:ABCCBDDAEFFEGG
我對解釋而不是代碼感興趣。
謝謝
假設您對雙順序遍歷的解釋感興趣:
對於每次遍歷,你
這里的所有都是它的。 如果您沒有左子(例如C),則兩個“訪問節點”操作會重復發生,這就是您在輸出中看到兩個C的原因。
只是為了可視化(輸出為粗體):
等等
主要是遍歷樹的遞歸方法(這里我們處理的是二叉樹)
這是一個雙階遍歷的算法:
算法DoubleOrder(root)
if(root不為NULL)
萬一
說明:
最終輸出:ABCCBDDAEFFEGG
我希望它可以幫助你理解整體概念! 我很高興第一次回答堆棧溢出:)
想象一下,你正在走路,從根開始。
等等
這只是一種遍歷內外的遍歷。
在一個前序遍歷的左右兒童訪問之間,你訪問根(因為你必須回到它進一步走),你可以認為葉子沒有孩子的根,而null
會讓你回去在任何時候(因此連續兩次訪問葉子,節點只有正確的孩子)。
遞歸:
1. Visit root of (sub)tree.
2. Visit left subtree.
3. Revisit root of (sub)tree.
4. Visit right subtree.
我無法想到它的應用程序,雖然我已經做了一些真正奇特的事情,一堆樹上的節點(和鏈表)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.