线段树(区间树)
来源:互联网 发布:网络微信投票怎么刷票 编辑:程序博客网 时间:2024/06/03 15:14
实际上还是称为区间树更好理解一些。
树:是一棵树,而且是一棵二叉树。
线段:树上的每个节点对应于一个线段(还是叫“区间”更容易理解,区间的起点和终点通常为整数)
同一层的节点所代表的区间,相互不会重叠。
叶子节点的区间是单位长度,不能再分了。
线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。a,b通常是整数。每一个叶子节点表示了一个单位区间。对于每一个非叶结点所表示的结点[a,b],其左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2,b](除法去尾取整)。
线段树的基本用途:
线段树适用于和区间统计有关的问题。比如某些数据可以按区间进行划分,按区间动态进行修改,而且还需要按区间多次进行查询,那么使用线段树可以达到较快查询速度。
线段树的构建
createSeg //以节点v为根建树、v对应区间为[l,r]
{
对节点v初始化
if (l!=r)
{
以v的左孩子为根建树、区间为[l,(l+r)/2]
以v的右孩子为根建树、区间为[(l+r)/2+1,r]
}
}
(浏览器似乎不太好用了,上面的代码点“插入代码”不管用,就直接贴出来了)
个人感觉线段树比较灵活,要多做一些题目才能对线段树有一个大概的掌握。
网上看见了一些线段树的资料,这里也贴出来。
线段树的一种简化实现
http://www.cnitblog.com/cockerel/archive/2006/09/13/16806.html
线段树(区间树)Segment Tree
http://www.wutianqi.com/?p=1140
http://www.wutianqi.com/?p=1369
线段树基础知识
http://hi.baidu.com/lemon_cn/blog/item/2093b64bd63797f682025c9f.html
线段树的构造过程
http://kmplayer.javaeye.com/blog/576486
RMQ问题以及ST算法
http://hi.baidu.com/wjn123335/blog/item/4d485a08414c5ed362d9868a.html
数据结构 – 线段树
http://www.cnblogs.com/superbin/archive/2010/07/17/1779842.html
http://www.cnblogs.com/superbin/category/253674.html
http://www.cnblogs.com/superbin/archive/2010/08/02/1790467.html
线段树模版
http://www.cppblog.com/NicYun/archive/2008/08/05/58037.html
线段树
http://blog.chinaunix.net/u3/102500/showart_2257428.html
转自:http://www.cnblogs.com/tanky_woo/archive/2010/09/25/1834523.html
- 线段树(区间修改,区间查询)
- 线段树(区间树)
- 线段树(区间树)
- 线段树(区间树)
- 线段树 (区间合并)
- *线段树(区间修改)
- 线段树(区间修改)
- 【线段树】区间求和+区间修改(区间加)
- 线段树 区间合并
- 线段树区间修改
- 线段树 区间合并
- 线段树区间更新
- 线段树区间更新
- 线段树 区间合并
- 线段树 区间更新
- 区间求最值 线段树
- hdu3911 区间线段树
- 线段树 区间合并
- Office 2010打开xls文件“格式与文件扩展名指定的格式不一致”
- poj2570 Fiber Network 最短路floyd
- HDU 4468 Spy && 动态KMP && 2012 Asia Chengdu Regional Contest
- 构建Java并发模型框架
- 奇怪,Linux 3.11.2-1-ARCH x86_64 居然还是可执行堆栈?
- 线段树(区间树)
- 轻松使用线程: 减少争用——抛开您自己的习惯,提高应用程序的性能
- 【黑马程序员】C#之静态成员
- 我欲插花花不开,无心插柳柳成荫
- 模糊哈希算法的原理与应用
- struts2请求处理流程详解
- [小技巧]一个长整数的内存映像转换为16进制
- 2013-10-07 实验之按键中断控制Led
- 深入探讨 Java 类加载器