treap数据结构中的优先级生成

时间:2014-07-30 04:22:28

标签: algorithm data-structures tree heap treap

treap example

我正在研究treap数据结构。插入节点时,treap radomly生成节点的优先级。但是,如果上图中69节点生成的优先级为13,该怎么办?

父母的优先级必须高于孩子的优先级。 treap的二叉树属性是否与堆属性冲突?

我想知道。感谢。

2 个答案:

答案 0 :(得分:1)

如果节点69具有优先级13,则它将是树的根,并且节点31将是其左子节点。节点31的后代将如图所示,当然除了节点69之外。

总是可以安排一个treap,以便它既可以考虑堆也可以考虑二进制搜索属性。事实上,在没有相同价值观或同等优先权的情况下,只有一种可能的安排。

优先级的随机分配使得treap可能会合理平衡。它可能不是完美平衡的,但从积极的一面来看,建立这种快感并不复杂。

答案 1 :(得分:1)

假设你没有69节点从你的图片中删除并想要添加(69,13)节点:
1. 拆分现有的treap到按键69的L和R(此处所有旧的treap将为L) 2. 创建使用单个节点(69,13)进行三重扫描 3. 合并 M与L,然后与R
结果 对于这种情况,节点(69,13)成为新的根,旧的treap将是它的左子。