线段树
线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明[1],用以储存区间或线段,并且允许快速查询结构内包含某一点的所有区间。
线段树常常用对区间数据的更新和查询,主要的作用就是体现在对区间的处理。
最常见就是这样一个问题:
现在有一个长度为 n n 的数组 ,给定一个区间 i i ~ ,返回这个区间的元素 a[i] a [ i ] ~ a[j] a [ j ] 的和 sum s u m 。
最直接的方式便是对该区间的元素直接累加,这样的时间复杂度为