随笔分类 - 伸展树
摘要:伸展树。。。 赤果果地抄袭雷哥的代码:http://www.cnblogs.com/jianglangcaijin/archive/2013/01/21/2869148.html 题意:输入n,m。给你n个数,初始排列是1到n,然后有m个操作,每次操作给两个数L,R,把(L,R)区间上的数的顺序颠倒,输出最终的顺序。 伸展树就是二叉查找排序数,一个节点的左子树上的数都比它小,右子树上的数比它大。这道题要在首尾加上哨兵,即有n+2个数,操作(L,R),就是把L-1旋转至根节点,然后把R+1旋转至L-1的右子树,那么R+1的左子树就是区间(L,R),然后把这个区间颠倒。 因为是第一次看...
阅读全文
摘要:1.什么是伸展树。 Splay Tree 中文叫伸展树,或者分裂树。伸展树是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它的优势在于不需要记录平衡树的冗余信息。 2.为什么会有伸展树 假设想要对一个二叉查找树执行一系列的操作,为了使整个查找时间更小,被查频率高的那些节点就应当经常处于靠近树根的位置。于是想到设计一个简单方法,在每次查找节点之后对树进行重构,把被查的节点搬至树根,这种自调整形式的二叉查找树就是伸展树,它会沿着某个被访问节点到树根之间的路径,通过一系列的旋转把这个被访问的节点搬移至树根。 3.怎样旋转搬移至树根? 假设当前被访问节点为X,X的父亲...
阅读全文

浙公网安备 33010602011771号