在树中存在的键处拆分treap

时间:2013-03-16 22:43:30

标签: algorithm data-structures

我一直在尝试实施和理解split/merge上的treap操作。每个节点都有两个密钥:堆密钥和树密钥。查看堆密钥,您应该看到一个有效的堆,并且与树键相同。

分割treap比平常更容易,因为你可以插入一个具有maxmimum或最小优先级的虚拟节点(取决于它是最大堆还是最小堆)。但是,this link只是假设分裂键不在树中。但是,如果我总是希望在右侧树或左侧树中存在现有密钥,该怎么办?我该怎么办?

1 个答案:

答案 0 :(得分:1)

  1. 使用相关密钥查找节点。
  2. 将其移动以成为新的根(通过赋予它非常高或非常低的优先级)。
  3. 拆分左(或右)子树。