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

线段树为什么要开4倍空间

时间:2014-08-11 12:08:13      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   os   io   strong   2014   art   

假设我们用一个数组来头轻脚重地存储一个线段树,根节点是1,孩子节点分别是2n, 2n+1, 那么,设线段长为L(即[1..L+1))

bubuko.com,布布扣

设树的高度为H,对H,有:

H(L)={1,1+H(?L2?),L = 1L > 1

这是一个很简单的递归式,并用公式(http://scinart.github.io/math/2014/03/16/QA39.2.G733-1994-CM-3/#mjx-eqn-3.11)逐次代换,就等到

H(L)=k+H(?L2k?), k 2kL

所以

H(L)=?lgL?+1.

所以显然所需空间为

      2^H?1=2^(?lgL?+1)?1

=2×2^(?lgL?)?1

=2×2(L?1)?1, L2

=4L?5,L2

-- EOF --(过程来自于http://scinart.github.io/acm/2014/03/19/acm-segment-tree-space-analysis/)跟大家一起分享下!

线段树为什么要开4倍空间,布布扣,bubuko.com

线段树为什么要开4倍空间

标签:style   http   color   os   io   strong   2014   art   

原文地址:http://blog.csdn.net/u012313382/article/details/38488137

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