【发布时间】:2020-05-22 20:50:18
【问题描述】:
我收到一棵或多棵节点树。
节点上可能有也可能没有 ID 属性。
目前我正在遍历树并在没有 ID 属性的节点上添加随机的 8 位数字。因为我预计树中的节点不会超过 10k,所以发生冲突的机会非常小。
我仍在考虑如何最好地将 ID 的长度减少到 4 位,同时确保一棵树中没有冲突。我想到的是遍历将现有 ID 收集到 Set 中的树一次,然后在检查 Set 是否没有冲突时再次添加新 ID。必须为每棵树重置集合。
如果有更高效的方法来实现这一点,我将不胜感激您对此事的意见和建议。
附录 A:
我正在考虑以下(简化的 0-9)问题。如果我有一组现有 ID [0, 1, 2, 5, 8, 9] 我将不得不生成随机数,直到我得到例如4(无碰撞)我担心在较大的 Set 上会有点慢,而且肯定不是最佳路线。
【问题讨论】:
-
这是一棵树。您在插入时不知道您是否在复制现有节点吗?
-
@RobertHarvey 我收到一棵树,其中一些节点有,而其他节点没有 ID。我希望所有人都拥有 UniqueID。
-
我会改写我的问题。您现有的树是如何知道将每个节点放在哪里的?
-
@RobertHarvey 我没有关于这些树最初是如何构建的信息。通过使用 ID,我可以轻松添加孩子/兄弟姐妹。
-
你为什么不走你现有的树并建造一棵新的?
标签: javascript typescript uniqueidentifier