摘要: 简而言之,treap=tree+heap,首先它是一棵二叉树,其次treap中每个节点含有一个优先级的值,这些值随机给定,但整棵树中的这些值满足大根堆(或小根堆的性质)。左旋与右旋操作跟其他平衡树一样。插入操作:首先将新节点插入到叶子节点位置(与普通排序二叉树一样),然后由于插入后可能破坏了heap的性质,这个时候需要对新插入节点的根节点进行左旋或右旋,一直调整到符合heap性质为止。删除操作:将需要删除的节点旋转到叶子节点或者只有一个孩子的位置,然后删掉就可以了。关于size,用treap来维护节点的size域(即以某节点为根的子树中节点的个数)是非常方便的,加一个maintain操作即可。 阅读全文
posted @ 2013-04-05 21:22 A&C 阅读(251) 评论(0) 推荐(0) 编辑