二叉查找树与平衡树
文章平均质量分 72
xffyjq
Never never never give up.
展开
-
二叉查找树与平衡树简介
在信息奥赛中,我们常常会遇到序列中的元素查找问题。有时候二分查找就能满足需要,但是当题目附加插入与删除操作时,二分查找便显得不那么灵活。这时候,我们就要用到二叉查找树(又称二叉排序树)来进行查找。一、二叉查找树二叉查找树的主要特征为:对于每一个节点:(1)若其左子树不空,则其左子树上所有结点的值均小于该结点的值;(2)若其右子树不空,则其右子树上所有结点的值均大于该结点的值;(有时可变为小于等于或大原创 2016-08-14 14:51:06 · 1277 阅读 · 1 评论 -
平衡树之treap
之前的博客中简单地阐述了二叉查找树的概念及简单应用,并介绍了平衡树。接下来我们便开始研究平衡树中实现较为简单的一种——treap的具体写法。一、treap简介介绍treap之前,先允许我来介绍一下笛卡尔树。这种树有两个值,如果只看第一个值(以下称为第一关键字),其满足二叉查找树的性质,而只看第二个值(以下称为第二关键字),其满足堆的性质(即某节点所有子树值比其大或小)。顾名思义,treap=tree原创 2016-08-14 20:59:08 · 528 阅读 · 0 评论 -
poj2761(静态区间第k大,treap)
题意:给你一个序列和m个区间[l,r],每次输出每个区间中第k大的值为多少。区间之间有重叠但没有完全包含。 解析:由于区间没有完全包含。所以先将区间按左端点排序,每次查询一个新区间时将其与上一个区间重叠部分保留,其余删去,在加入自己新的部分,最后查询第k大值。这是一道考察treap应用的好题。 #include #include #include #include using namespac原创 2016-08-14 22:27:04 · 479 阅读 · 0 评论