2013-04-07 120 views
0

如果T是一個有多於一個節點的有序樹。是否有可能T的前序遍歷以與T的後序遍歷相同的順序訪問節點? 如果「是」,請舉個例子。如果「不」,請你解釋爲什麼它不會發生?預訂遍歷是否可能與後序遍歷的順序相同?

+0

你有假設嗎? – NPE 2013-04-07 07:27:00

回答

1

除非我錯過了一些顯而易見的事情,否則答案是否定的。具有> 1個節點的有序樹(例如2個節點)將如下所示。

A  
B      

A 
     C 

後序遍歷訪問在左右根和預購訂單的節點訪問節點根的順序-左右。爲了讓他們產生相同的輸出,「左」必須等於「根」,這是沒有意義的。通過上面的例子,預購將分別產生AB或AC,後期將產生BA和CA.

+0

謝謝, 所以只是在一種情況下,預購和後訂單是一樣的。只是「左或右」等於「根」?還有其他例外嗎? – Omid7 2013-04-07 07:52:05

+0

只有當有一個節點時,左邊將等於根節點 – ggbranch 2013-04-07 07:54:30

0

在一般情況下,樹的葉子是獨一無二的,因此,如果您執行前序遍歷或後序遍歷,應該以相反的方式出現。

但是,我可以看到兩種情況,其中前後遍歷是相同的:單例和重複元素。

對於單身人士,您只有一個節點,所以如果您在查找零葉之前或之後訪問它,並不重要。

如果您的樹中有重複元素,該怎麼辦?如果插入的策略是接受任何元素大於或等於根節點,那麼就會出現退化樹權:

A 
    \ 
    A 
    \ 
    A 
     \ 
     A 

如果是小於或等於根節點,你'd仍然有一棵退化的樹,但在左邊。

現在,如果您的插入策略是放棄重複元素,那麼您將留下單例情況,它仍然具有導致相同元素的前後遍歷。

+0

謝謝, 對不起,我不能爲你投票。 所以如果我們有三個相同的元素:A1 A2 A3; 預購:A1 A2 A3; 後續訂單:A3 A2 A1;兩者相同 – Omid7 2013-04-07 08:16:12

+0

從節點檢索到的值將相同,但您正在訪問不同節點以獲取值。這取決於你希望你的樹有什麼用處 – ggbranch 2013-04-08 06:46:39