嵌套的树元素编号

时间:2013-04-30 10:36:11

标签: math tree logic

我想问的是数学/逻辑情况 我有嵌套的树,看起来很像 this one

我需要每个商品订单的索引编号,例如:

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

(1,2,3 ...值不一定是这些值)

按此值排序项目时需要这样做。在订单之后,我需要获得所有第一项,而不是所有第二项...等等

设置每个项目的订单号很容易,但我要查找的是根据每个项目及其父项的左右值计算的值

2 个答案:

答案 0 :(得分:0)

您可以将索引计算为一个加上左兄弟的索引,或者如果没有左兄弟则计算一个索引。如果您无法控制索引计算的顺序,则可能必须迭代所有左侧兄弟,计算它们,以计算索引。

没有直接的方法。一种看待这种情况的方法是想象一个节点被插入到具有相当低索引的树中。除了它的直接兄弟姐妹之外的节点将无法知道这个插入,只需查看父节点和直接兄弟指针即可。但他们的指数必须改变。这意味着这些指针不足以直接计算索引。

答案 1 :(得分: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)