首页 > 其他 > 详细

线段树基础

时间:2019-11-01 19:18:32      阅读:83      评论:0      收藏:0      [点我收藏+]

一,什么是线段树

线段树是一种二叉搜索树,它将一个区间划分成一些单元区间

每个单元区间对应线段树中的一个叶结点

将[1,n]分解成若干特定的子区间(数量不超过4*n)

用线段树对“编号连续”的一些点,进行修改或者统计操作,修改和统计的复杂度都是O(log2(n))

用线段树统计的东西,必须符合区间加法

也就是说,如果已知左右两子树的全部信息,比如要能够推出父节点

否则,不可能通过分成的子区间来得到[L,R]的统计结果

一个问题,只要能化成对一些“连续点”的修改和统计问题,基本就可以用线段树来解决了

解决问题时常会用到离散化

技术分享图片

 由上图可知,每个节点的左孩子区间范围为[l,mid],右孩子为[mid+1,r]

对于结点k,左孩子结点为2*k(k<<1),右孩子为2*k+1(k<<1|1)

 

 

 

线段树基础

原文:https://www.cnblogs.com/adelalove/p/11778751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!