天天看点

看动画学算法之:线段树-segmentTree

简介

最小线段树

线段树的构建

线段树的搜索

线段树的更新

线段树的复杂度

什么是线段树呢?线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。

线段树的每个节点都表示一个区间,而根据线段树的不同特征,线段树的节点值可以表示这个区间里的最小值,最大值或者sum值等等。

下面我们以最小线段树为例来说明一下线段树的特性:

看动画学算法之:线段树-segmentTree

如果原始数据是一个数组,我们也以数组来表示线段树。

假设生成的线段树的起点index=1,并且对线段树中的每个非叶子节点index k来说,它的左子节点index=2* k, 而它的右子节点index=2* k+1 。

上图中,标黄色的是原始数组,总共有七个元素。

上面的树形结构就是根据原始

继续阅读