简介
什么是线段树呢?线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。
线段树的每个节点都表示一个区间,而根据线段树的不同特征,线段树的节点值可以表示这个区间里的最小值,最大值或者sum值等等。
最小线段树
下面我们以最小线段树为例来说明一下线段树的特性:
如果原始数据是一个数组,我们也以数组来表示线段树。
假设生成的线段树的起点index=1,并且对线段树中的每个非叶子节点index k来说,它的左子节点index=2* k, 而它的右子节点index=2* k+1 。
上图中,标黄色的是原始数组,总共有七个元素。
上面的树形结构就是根据原始数组构建出来的线段树了。
因为是最小线段树,每个非叶子节点存储的都是子节点中的最小值。
举个例子: index=1 的元素表示的是原始数组范围0-6,并且它的值是11,表示的是原始数组0-6范围中,最小的值是11。