算法导论-第14章
来源:互联网 发布:没有网络怎么重装系统 编辑:程序博客网 时间:2024/05/20 18:20
数据扩张,说简单一点就是,在基本数据结构上加点东西。干什么?能有新操作,而且易于维护。
3个事情
1.顺序统计操作
2.一个扩张定理
3.一个查询区间
关于第一:
我加一个新的东西叫size——它是每个结点的为根,这个树里面有多少个结点,包括自己
为什么加?
因为它和很方便的在红黑树里面找到,第i个大的元素。方便。。。
公式
size[x]=size[left[x]+size]right[x]]+1
通俗点说就是,每个结点=它的左子树结点+右子树结点+1
如何找到第i个元素?
书上面就是说了一个递归
找一个r,它是根左半树的第r个元素
1.如果相当,则正好就是这个点
2.不相等,比r小,那么从根的左子树,递归查找
3.比r大,则从右子树,第i-r个找?为什么???因为前面有r个树,只要找后面的第i-r个树,就是整体的第i个大元素。
至于判断一个元素的秩?也就是第几个大的意思
那你好好看图就明白了
因为size记录的是这个树有几个结点,而你的结点,只要它是某个结点的右边孩子,则你就必须让它上升,然后利用那个公式。
这个地方,我都不知道该如何能表达清楚了,总之,你要看p182,多看看几遍。
关于第二:
内容不多,估计大家有人也看不进去,总之一句话,就是红黑树扩张了以后,对于插入和删除,它能保持在o(lgn)之内。
关于第三:
区间树?你现在的红黑树,不是一个key值了,而是一个区间了
size不是上面的意思,而是另外的这个区间的最大右边端点值。
区间和区间如何重叠??如何不重叠???
这个就不说了吧,谁都知道条件
我最后提醒一句,红黑树,他们上面还依然是结点,是结点??当然不是区间???
区间是干什么的??
假如是数值,我们可以简单比较大小,那么区间能干什么?当然是重叠不重叠,也就是上面的条件,所以不再是简单的比较大小。
- 算法导论-第14章
- 算法导论第3章
- 算法导论-第1章
- 算法导论-第2章
- 算法导论-第3章
- 算法导论-第4章
- 算法导论-第5章
- 算法导论-第6章
- 算法导论-第7章
- 算法导论-第8章
- 算法导论-第9章
- 算法导论-第10章
- 算法导论-第11章
- 算法导论-第12章
- 算法导论-第13章
- 算法导论-第15章
- 算法导论-第16章
- 第0章 算法导论
- [Android开发常见问题-2] eclipse安装/卸载svn插件
- 使用gSoap开发Web Service C/C++客户端
- 二分查找——UVa 10706 - Number Sequence
- AIX上提供了XLC编译器也提供了CC编译器,这两个编译器有什么差别呢?
- python等笔记
- 算法导论-第14章
- Java集合总结
- The VC programming specifications - programmers should write code like this
- 添加或删除项并动态记录项的值
- 【鸡肋实验】数据线性相关性对机器学习的影响(一)
- android 框架试用--spring for android
- 《c陷阱与缺陷》笔记--extern
- 事务隔离级别
- 嵌入式ucos系统上移植实现USB UVC协议(支持HD 720P Webcam)