线段树基础
线段树是一种常用的用来维护区间信息的数据结构。
具体来讲,线段树是一棵树,每一个节点都维护一个区间的信息和。
线段树可以如此递归定义:
-
根节点 维护的区间是 。
-
设当前节点维护的区间是 。如果 ,则它是叶节点;
-
否则它有两个儿子,分别维护区间 和 。
下面的图详细的描述了线段树。

显然,除了最后一层,整棵线段树是一棵完全二叉树。于是,我们可以直接使用 和 来表示 的两个儿子,于是只需要一个数组就可以存下这颗线段树。
注意,线段树数组一定要开到 !!!
线段树是一种常用的用来维护区间信息的数据结构。
具体来讲,线段树是一棵树,每一个节点都维护一个区间的信息和。
线段树可以如此递归定义:
根节点 维护的区间是 。
设当前节点维护的区间是 。如果 ,则它是叶节点;
否则它有两个儿子,分别维护区间 和 。
下面的图详细的描述了线段树。
显然,除了最后一层,整棵线段树是一棵完全二叉树。于是,我们可以直接使用 和 来表示 的两个儿子,于是只需要一个数组就可以存下这颗线段树。
注意,线段树数组一定要开到 !!!