伸展树的学习(一):学习的前提

本文详细介绍了伸展树与平衡二叉树的基本概念、操作及应用,通过对比分析,帮助读者深入理解这两种数据结构的核心原理与实际应用。文章结合实例,阐述了伸展树的独特之处,如动态区间维护、插入指定区间数据等功能,并指出伸展树与平衡二叉树(如SBT)的区别与联系。同时,提供了多个相关文档资源供读者进一步学习与实践。

    学习伸展树差不多有两个多星期了吧!慢慢地也领悟到了它最基本的实现,都不敢说是:初窥门庭!最先看的是杨思雨的论文《伸展树的基本操作与应用》。现在回头看确实写得挺清晰易懂,但是可能是自己看书没仔细看,或许是悟性太差吧!一直没看懂,特别是结点旋转的那几张图,即把X旋转到树的根结点!

    后来也不知道是看到哪篇博客,讲想看懂伸展树,最好先学习一下SBT(陈启峰《Size Balanced Tree》),当然了解线段树是必须的,重点是线段树的懒操作!我就是看SBT(Size Balanced Tree(SBT)平衡二叉树)才明白旋转是怎么回事的!

    建议学习的同学自己画画图,一般画画可能就懂了!如果明白旋转了,基本上伸展树也就看懂了一半了!

    但是呢,看SBT又容易进入一个误区,那就是把思维固定到:伸展树与SBT一样,是一种二叉查找树。SBT一般是以key为关键值来组织数据,最后树的中序遍历保证存储的值是按从小到大顺序排列。比如数组:a[]={4,3,1,2,5},把a[i]放入SBT中后,中序遍历的结果就变成了:1 2 3 4 5!我个人觉得伸展树是不一样的,伸展树中序遍历能保证数组的下标从小到大输出,但不能保证数据是从小到大输出的。它维护的是区间,动态的区间,这与线段树更相似。而且伸展树与线段树相比,多了以下几个功能:插入一组数据到指定区间,删除一段区间的数据,反转区间等(参见POJ3580)。

   关于伸展树的操作,有很多的论文,这里我就不具体写了,就算写出来肯定也没那些大牛写得好!就把论文放到51cto下载版块里,以后自己想看也能很快找到!

  参考文档:

 

Size Balanced Tree(SBT)平衡二叉树

:http://blog.youkuaiyun.com/acceptedxukai/article/details/6921334

 

杨思雨:《伸展树的基本操作与应用》

Crash: 《运用伸展树解决数列维护问题》

Mashuo: 《伸展树操作详解》

由于相关的资料比较多,比较杂,包括代码,论文,我就打包放到下载版块中去,顺便也赚点下载豆!

下载地址:http://down.51cto.com/data/542004

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值