2013-04-30 96 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)