线段树的理解---摘自李煜东的《算法竞赛进阶指南》对应章节

       线段树是一种基于分治思想的二叉树 结构,用于在区间进行信息统计。其特点包括如下:

  1. 线段树的每一个节点都代表一个区间。
  2. 线段树具有唯一的根节点,代表的区间是整个统计范围,如[1,N]
  3. 线段树的每一个叶节点都代表一个长度为1的元区间[x,x]。(加上线段树的非叶子节点,联合线段树本质是个完全二叉树的性质,所以一般来说线段树总共有N<<1-1个节点,但是在这种存储方式下,最后还有一层会产生空余。所以保存线段树的数组长度要不小于N<<2才不会产生数组越界的情况)
  4. 对于每个内部节点[L,R],它的左孩子节点是[L,mid],右孩子节点是[mid,R],其中mid = (L+R)>>1;
    哪天有空了我会把对应的代码更新上来(写这个文章主要是为了应对出现写算法题时恰好书不在身边或者直接不想翻书)

你可能感兴趣的:(数据结构与算法)