【发布时间】:2017-07-03 00:11:53
【问题描述】:
我在 many different languages 中看到了许多不同的 BK 树实现,实际上它们似乎都没有包含从树中删除节点的方法。
即使the original article where BK Trees were first introduced 也没有提供关于节点删除的有意义的见解,因为作者只是建议标记要删除的节点以便将其忽略:
结构 1 [BK 树] 和结构 2 中密钥的删除遵循与上述类似的过程,特别考虑要删除的密钥是代表 x° [根密钥] 的情况。在这种情况下,不能简单地删除密钥,因为它对于结构信息是必不可少的。相反,必须为每个键使用一个额外的位,表示该键是否实际对应于记录。相应地修改搜索算法以忽略不对应于记录的键。这涉及在更新过程中测试额外的位。
虽然理论上可以正确删除 BK 树中的节点,但是否可以在线性/亚线性时间内这样做?
【问题讨论】:
标签: algorithm tree time-complexity abstract-data-type bk-tree