【问题标题】:Possible to update nodes key in a red-black tree, without removing and inserting?可以在不删除和插入的情况下更新红黑树中的节点键吗?
【发布时间】:2014-05-06 05:08:50
【问题描述】:

通常需要通过删除然后重新插入节点来对红黑树中的键进行更改。

是否可以对红黑树中的节点进行key更新,比delete+insert更高效?

【问题讨论】:

  • 什么是关键更新?删除键值对,在新键下重新插入值?
  • @delnan 虽然通常使用重新插入 - 有时就地更新会更快。这是一个有趣的问题! - 有人试过吗?

标签: algorithm data-structures insert-update red-black-tree


【解决方案1】:

使用 [search if required +] delete + insert 实现更新

1 - 删除密钥 O(log n)
2 - 使用新密钥 O(log n)
插入一个新节点 即使你先搜索一个键,它也是 O(log n)

有关 RBT 的更多详细信息,请参阅this 页面。

【讨论】:

  • 这个答案似乎不完整,算法至少可以检查相对于其他节点的顺序是否不变。虽然我不知道是否可能,但似乎可以在没有完全删除+插入的情况下执行某些操作。
猜你喜欢
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 2011-09-18
  • 1970-01-01
  • 2022-12-10
  • 2018-10-04
相关资源
最近更新 更多