线段树

✍ dations ◷ 2025-12-06 18:57:55 #数据结构

线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明,用以存储区间或线段,并且允许快速查询结构内包含某一点的所有区间。

一个包含 n {\displaystyle n} 个区间的线段树,空间复杂度为 O ( n ) {\displaystyle O(n)} ,查询的时间复杂度则为 O ( log n + k ) {\displaystyle O(\log n+k)} ,其中 k {\displaystyle k} 是符合条件的区间数量。

此数据结构亦可推广到高维度。

本处以一维的线段树为例。

令S是一维线段的集合。将这些线段的端点坐标由小到大排序,令其为 x 1 , x 2 , , x m {\displaystyle x_{1},x_{2},\cdots ,x_{m}} 。我们将被这些端点切分的每一个区间称为“单位区间”(每个端点所在的位置会单独成为一个单位区间),从左到右包含:

线段树的结构为一个二叉树,每个节点都代表一个坐标区间,节点N所代表的区间记为Int(N),则其需符合以下条件:

相关

  • 奥斯塔奥斯塔(意大利语:Aosta;法语:Aoste)是意大利双语政区瓦莱达奥斯塔的主要城市,位于阿尔卑斯山上近白山隧道入口处,距都灵约110千米。奥斯塔2005年人口约为3万5千。
  • 语言起源语言的起源是一个有高度争议性的话题,由于可得到的实证证据的欠缺,许多人认为严肃的学者不应涉足于此问题。1866年,巴黎语言学会(法语:Société de linguistique de Paris)甚至明
  • 南极海南冰洋(英语:Southern Ocean或Antarctic Ocean),亦称南极海或南大洋,是围绕南极洲的海洋,也是太平洋、大西洋和印度洋南部的海域,大致在南纬60度线以南。以前人们一直认为太平洋、
  • 布雷默顿布雷默顿(英语:Bremerton)是一个位于美国华盛顿州基沙普县(Kitsap County)的海岸城市与军港,人口37,259人(2000年统计)的该市是基沙普半岛(英语:Kitsap Peninsula)上最大的聚落,也是美国
  • 拉塞尔·马尔卡希拉塞尔·马尔卡希(英语:Russell Mulcahy,1953年6月23日-)是一位澳大利亚男导演和编剧。出生于澳大利亚的墨尔本。马尔卡希除了电影和电视剧外,还时常执导MV,且会使用快速剪辑(英语:Fa
  • 奥特洛坐标:52°06′N 5°47′E / 52.100°N 5.783°E / 52.100; 5.783奥特洛(Otterlo),或译奥特罗,是位于荷兰海尔德兰省的一个小村庄,在行政区划上属于埃德。1818年之前,奥特罗曾是独立
  • 喊山喊山,可以是:
  • 情义情义可以指:
  • 弹性饮食弹性饮食(英语:flexible dieting)为一种新兴饮食概念,强调个体可以食用任何想吃的食物,只要符合己身的宏量营养素目标即可。因此英语上又称为:macros diet、If It Fits Your Macro
  • 参数所指定的目标页面不存在,建议更正成存在页面或直接建立下列一个页面(建立前请先搜寻是否有合适的存在页面可以取代):注意如果条目名称是繁体字要使用繁体的“消歧義”,简体字