[线段树]深入理解:线段树的构建和分解方法

如果还不了解基本的线段树,请点击这里查看。


——线段树的构造,实际上是利用了二分的方法。每次在构造相应区间时,需要按照二分的规则来继续分解,并构造区间内的子区间,存成一个新的节点,并以此保留新的信息。构造整棵线段树时,需要把每个节点分解,直到所有的节点长度缩减为1时才可以停止。


——线段树的分解,遵循的规则和线段树的构造是类似的。不同之处在于:分解的规则就是:如果有某个节点的区间完全属于待分解区间,则该节点为终止节点,不再继续往下分解。所有终止的节点所代表的区间都相互不重叠,且加在一起就恰好等于整个待分解的区间。


线段树的构建:

function 以节点v为根建树、v对应的区间为L,R

{

对节点进行初始化,插入相应的节点基本信息

if(L != R)

{

以v的左孩子为根建树,区间为L,(L+R)/2

以v的右孩子为根建树,区间为(L+R)/2+1,R

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值