码迷,mamicode.com
首页 > 其他好文 > 详细

线段树详解

时间:2020-07-28 16:49:56      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:term   否则   一个   image   一段   满二叉树   线段   序列   http   

概念

  线段树是一棵二叉树,线段是上每个结点对应的是序列的一段区间。如图(以下图片为引用)

技术图片

  容易发现,根节点对应的是整个区间[0,n-1].若一个结点对应的区间为[l,r],当l=r时,它是一个叶结点,没有左右儿子;否则他一定有两个儿子,令mid=(l+r)/2,则左儿子对应的区间为[l,mid],右儿子对应的区间为[mid+1.r]。

  从这里也可以看出,最后一层有n个结点,倒数第二层有n/2个结点,以此类推,因此线段树中的结点数是n+n/2+n/4+…+1=2n-1。

  令线段树的高度(层数)为h,不难看出h只有O(logn)级别。当我们需要维护的序列长度为2的整数次幂时,线段树是一棵满二叉树。其他情况下,线段树前h-1层是满二叉树,最后一层不满。

 

线段树详解

标签:term   否则   一个   image   一段   满二叉树   线段   序列   http   

原文地址:https://www.cnblogs.com/ycy123456/p/13391441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!