如何详细解释并实现C语言中的线段树原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2969个文字,预计阅读时间需要12分钟。
目录
一、问题引入
二、线段树的结构构建
三、线段树的单一修改与查询
1.修改
2.查询
四、线段树的区域修改与查询
1.修改
2.查询
五、问题引入
对一般区域查询问题,例如RMQ(区间查询)目录
- 一、问题引入
- 二、线段树的构建
- 三、线段树的单点修改与查询
- 1、修改
- 2、查询
- 四、线段树的区间修改与查询
- 1、修改
- 2、查询
一、问题引入
对于一般的区间问题,比如RMQ(区间的最值)、区间的和,如果使用朴素算法,即通过遍历的方式求取,则时间复杂度为O(N),在常数次查询的情况下可以接受,但是当区间长度为N,查询次数为M时,查询复杂度就变成O(M*N)。在M和N较大时,这样的复杂度无法满足要求。
对于这类问题,有一个神奇的数据结构,能够在O(M*logN)的时间内解决问题——线段树。
本文共计2969个文字,预计阅读时间需要12分钟。
目录
一、问题引入
二、线段树的结构构建
三、线段树的单一修改与查询
1.修改
2.查询
四、线段树的区域修改与查询
1.修改
2.查询
五、问题引入
对一般区域查询问题,例如RMQ(区间查询)目录
- 一、问题引入
- 二、线段树的构建
- 三、线段树的单点修改与查询
- 1、修改
- 2、查询
- 四、线段树的区间修改与查询
- 1、修改
- 2、查询
一、问题引入
对于一般的区间问题,比如RMQ(区间的最值)、区间的和,如果使用朴素算法,即通过遍历的方式求取,则时间复杂度为O(N),在常数次查询的情况下可以接受,但是当区间长度为N,查询次数为M时,查询复杂度就变成O(M*N)。在M和N较大时,这样的复杂度无法满足要求。
对于这类问题,有一个神奇的数据结构,能够在O(M*logN)的时间内解决问题——线段树。

