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

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

时间:2015-04-08 00:53:02      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

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

Creation Time: 19 March 2014
Last Modified: 2014-03-23 01:01:26 scinart
 

最近在看《具体数学》,这篇当做是一个练习吧。

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

技术分享

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

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

这是一个很简单的递归式,并用公式3.11逐次代换,就等到

H(L)=k+H(L2k),其中 k 是满足2kL的最小值

所以

H(L)=lgL+1.

所以显然所需空间为

2H1=2lgL+11=2×2lgL12×2(L1)1,L2=4L5,L2
 
转自http://scinart.github.io/acm/2014/03/19/acm-segment-tree-space-analysis/

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

标签:

原文地址:http://www.cnblogs.com/Tach-ac/p/4401043.html

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