2013-04-30 95 views
-1

我想問的是數學/邏輯的情況 我有嵌套樹,類似於 this one嵌套樹元素數量

我需要每一個項目的索引號命令,例如:

Tube - 1 
LCD -2 
Plasma - 3 
MP3 Player - 1 
CD Player - 2 
2 Way Radios -3 

(1,2,3 ...值不必完全是這些)

對於按此值排序項目,這將是必需的。訂單後,我需要獲得所有第一項,比所有第二項...等等

很容易設置每個項目的訂單號,但我正在尋找的是一個值,每個項目及其父項的右值

+0

你試圖實現什麼?爲什麼要限制你如何計算指數。 – MvG 2013-04-30 11:45:14

+0

我猜測[* Mathematica *](http://www.wolfram.com/mathematica/)標記是錯誤的,我正在刪除它。如果我錯了,請將其添加回來。 – 2013-05-05 16:01:10

回答

0

您可以計算索引作爲一個加上左兄弟的索引,或者如果沒有左兄弟的索引,可以計算一個索引。如果您無法控制索引計算的順序,則可能需要迭代所有左邊的兄弟,對它們進行計數,以計算索引。

沒有直接的辦法。看到這種情況的一種方法是想象一個節點被插入到索引相當低的樹中。只是通過查看父節點和直接的兄弟指針,除了其直接兄弟節點之外的節點將無法知道這種插入。但是他們的指數將不得不改變。這意味着這些指針不足以直接計算索引。

0

要訂購它們,您可以使用DFS(深度優先搜索算法)。下面是一個可能的僞代碼,

DFS(node) 
{ 

index=1 

for all child v of node 
    assign v the value of index 
    DFS (v) 
    increment index by 1 
end for 

} 

assign the root the index 1 
DFS (root)