平衡树总结专题

本文介绍了Splay树的基本概念及两种主要的应用场景:按数值排序建立二叉树和按序列下标建立二叉树。文章还列举了作者在实现过程中常见的错误,帮助读者避免这些坑。

...首先我只会打Splay(伸展树),并不知道treap什么的...

而且没有系统的看过...只是看的一本名叫《高级数据结构》的书...

 

不过做题做了很多经典的了...

觉得这个东西主要还是看题目的需求吧。

平衡树首先比较适合的操作有插入删除,也可以像线段树一样加tag

一般只有两种情况:一是按照数值排序建立二叉树,二是按照序列的下标顺序建立二叉树。

对于第一种建树方法:常见的有求第k大的数,求前驱和后继,求最大最小值[这个用第二种也可以]。这个主要利用的还是二叉搜索树的性质和splay让二叉树保证结构稳定。

第二种建树方法:更多就在区间操作上了,例如翻转[这个比较特殊],同时加上数或同时赋成一个值。这个利用的就是splay完成的寻找区间操作以及树结构独特的标记色彩。

 

所以第一步办好了后面的事就是注意细节和看清题目了。

数据结构题非常容易犯细节错误——代码冗长....

 

我自己犯过的错误:

1.总是将儿子交代好,却忘记了儿子的父亲没赋值[主要体现在初始化数组的时候...]

2.下传标记忘记清空标记[线段树打少了...]

3.虚拟节点的标号搞不清[要知道其它节点因为它而变化了多少]

4.数组开小,忘记回收[这个还是没看清题的缘故...]

转载于:https://www.cnblogs.com/Robert-Yuan/p/5090285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值