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

