我一直在努力实现和理解asplit/merge上的treap操作每个节点都有两个键:堆键和树键。查看堆键,您应该会看到一个有效的堆,与树键相同。
拆分treap比正常情况更容易,因为您只需插入具有最大或最小优先级的虚拟节点(取决于它是最大堆还是最小堆)。不过,this link只是假设拆分键不在树中。但是,如果我总是想要正确的树内的现有密钥,或者左边的树呢?我该怎么办?

最佳答案

找到有问题的键的节点。
向上移动它以成为新根(通过赋予它很高或很低的优先级)。
拆分左(或右)子树。

关于algorithm - 在树中存在的关键点处分割开挖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15455582/

10-09 00:24