数据结构——线段树(单点更新、)
来源:互联网 发布:深圳人工智能企业 编辑:程序博客网 时间:2024/05/18 02:38
如果有错误,欢迎大神指出!!
线段树(模板):
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。
对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。
使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩。
线段树有很多模板,而且基本上每道题都是稍稍改动或者根本不需改动就可以直接使用线段树的模板,这里提供几个相对简洁的模板:
0 0
- 数据结构——线段树(单点更新、)
- 数据结构之线段树(单点更新)---HDU1166
- 数据结构 线段树 hdu1394 Minimum Inversion Number(单点更新)
- 数据结构 线段树 HDU 2795Billboard(单点更新)
- 数据结构之线段树 单点更新
- HDOJ 4399 —— 线段树单点更新&单点查询
- hdu1394——线段树(单点更新 区间求和)
- 线段树(单点更新)
- 线段树(单点更新)
- HDU—1166—敌兵布阵—【数据结构】【线段树】【单点更新】
- HDU—1754—I_Hate_It—【数据结构】【线段树】【单点更新】
- HDU—1394—Minimum_Inversion_Number—【数据结构】【线段树】【单点更新】
- HDU—2795—Billboard—【数据结构】【线段树】【单点更新】
- POJ—2828—Buy_Tickets—【数据结构】【线段树】【单点更新】
- HDU 1540——Tunnel Warfare(线段树,区间合并+单点更新+单点查询)
- 线段树(单点更新+区间更新)
- 线段树 单点更新
- 线段树单点更新
- 记录下明天的面试
- leetcode 315. Count of Smaller Numbers After Self
- python-eve配置实战
- android 自定义view 水波纹进度球
- shader学习(6)
- 数据结构——线段树(单点更新、)
- 十九、使用PopupWindow
- UVA 10098 Generating Fast
- hdu5867 数学题
- CodeForces 635B Island Puzzle(小岛放雕塑,思维)
- UVA 146 ID Codes
- ---使用HttpSession实现验证码功能
- OpenGLES入门笔记:Rajawali学习(3.1)球体的绘制
- 数据库想法整合,多表联立交互
- maxn是题目给的最大区间,而节点数要开4倍,确切的来说节点数要开大于maxn的最小2x的两倍
- lson和rson分辨表示结点的左儿子和右儿子,由于每次传参数的时候都固定是这几个变量,所以可以用预定于比较方便的表示
- 以前的写法是另外开两个个数组记录每个结点所表示的区间,其实这个区间不必保存,一边算一边传下去就行,只需要写函数的时候多两个参数,结合lson和rson的预定义可以很方便
- PushUP(int rt)是把当前结点的信息更新到父结点
- PushDown(int rt)是把当前结点的信息更新给儿子结点
- rt表示当前子树的根(root),也就是当前所在的结点
建树是一个关键(如图):