这几天学习ACM训练,第一次接触了线段树(Interval Tree)。
现在给大家简单说说我的一点点理解,以及poj上一道典型题目的源码和超详细的注释。
线段树:实际上称为区间树更好理解一些。线段:树上的每个节点对应于一个线段(区间)。
特点:(1)同一层的节点所代表的区间相互不会重叠。
(2)同一层节点所代表的区间,加起来是个连续的区间。
(3)叶子节点的区间长度是单位长度,不能再分。
线段树是一颗二叉树,树中每个结点表示了一个区间[a,b]。a,b通常是整数。对于每一个非叶节点所表示的节点[a,b],其左儿子表示区间为[a,(a+b)/2],右儿子表示区间为[(a+b)/2+1,b]。(除法去尾取整)。
图为区间【1,9】的线段树。
线段树的深度不超过log2(n)+1。<