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

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

时间:2019-09-02 15:38:58      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:动画   线段   png   最大   代码   code   width   为什么   线段树   

问题1: 线段树空间只需要2*n即可???

对于这种建图方式,建出来的并不是完全二叉树,而是具有完全二叉树性质(父节点为x,则左儿子为2x,右儿子为2x+1),好处:可以省掉许多并不需要的节点。由于具有完全二叉树这种性质,2*n空间一定不够用!!见下图:

技术图片

 

 

问题2: 线段树空间只需要3*n即可???

证明: 设长度为N的数组在线段树中,编号最靠右的节点为F(N)。(上图长度n=6,编号最右节点为13)

技术图片

代码测试:

思路:通过观察在建树过程中,最大的节点来判断是否会3*n空间越界。

技术图片

结果:通过发现,存在许多的3n空间的越界,最小的n=36,平时我们手动画一画,看是否3n越界,可能只是画的n比较小,所以画一画n=36,你将发现3*n会越界!!!

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

标签:动画   线段   png   最大   代码   code   width   为什么   线段树   

原文地址:https://www.cnblogs.com/FengZeng666/p/11446827.html

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