簡體   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