繁体   English   中英

如何为树节点分配唯一编号,以便可以从树叶中追溯父级?

[英]How to assign unique numbers to the tree nodes so that from the tree leaf I can trace back the parents?

我必须构造某些适合数据需求的数据和树数据结构。
我必须以某种方式为每个节点分配一定的编号,以便可以从其编号追溯到父节点。 我打算使用哈希表将这些数字存储为键,因此不能有任何重复的值。

例如

父母-000001
儿童1-000011
innerchild1-000111(级别2,从右边获得2位,我们可以到达父级)
innerchild2-000211
儿童2-000021
innerchild1-000121
innerchild2-000221

根据级别,我可以屏蔽某些位,并且可以唯一地标识父级。 但是,如果我的树长得更大(即更多的父母,数字将重复),如何克服这个问题?

我建议您使用1到9的数字。

为什么没有0? 带前导0的9位数字看起来像是8位,而没有前导0。这将导致错误。

因此,在任何父母最多有9个孩子之前,该结构就足够了。

数字0-公用根
1-9-第一个孩子
11-19-第一个孩子的第二代孩子...
等等

如果您的节点数超过9位,请使用100基算术。 (允许的数字为10-99)。 99个孩子够吗? 如果不是,请使用100-999。

可以使用嵌套集树解决此问题。 请参考下面的书。 这是一本了不起的书,其中还包含有关嵌套集树的文本。

http://www.elsevier.com/wps/find/bookdescription.cws_home/702605/description

您为节点分配“特殊”数字的方法听起来很糟糕-可能会导致大量的工作,可伸缩性限制以及最主要的问题。

如果您需要知道父节点是什么,请将对父节点的引用存储在该节点的字段中!

我认为作为关键字的“定义明确”的数字不够好。

您需要为您的需求或至少一个Node类设计一个树形结构,以使parentId / parent节点更容易。

例如

Node{
 id, #could be string, number, unique
 actualNode # you node value
 parentId (or Node parentNode )
}

如果由于某种原因坚持使用哈希表,您仍然可以使用node.id作为键。 有很多方法可以生成唯一的字符串,数字。 例如当前的纳秒...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM