线段树开4n空间的 三句话简单的证明

线段树存储N个节点

(1)假设线段树要存储的节点个数是 N = 2 k N = 2^k N=2k N = 4 N=4 N=4,那么一定是满二叉树。又因为线段树的性质其叶子节点数一定是n个。那么此时的满二叉树总节点个数为 N + N / 2 + N / 4... + 1 = 2 N − 1 N + N/2 + N/4 ... +1 = 2N-1 N+N/2+N/4...+1=2N1
在这里插入图片描述

(2)如果节点个数不是 N = 2 k N=2^k N=2k N = 5 N=5 N=5,树不一定是满二叉树,所以最后一层一定填不满。最坏情况下,最后一层的叶子节点在最右边。
在这里插入图片描述
(3) 对于前面的满二叉树,如果要再多开一层,需要多开的空间是 原有节点的个数*2 + 1(满二叉树的性质),我们原有 2 N − 1 2N-1 2N1个节点,现在需要开到 4 N − 1 4N-1 4N1了。

注意 对于节点数为4的个数,要让空间足够多一层,要开到 4 N − 1 4N-1 4N1 ,但是对于 N = 5 , 6 , 7 N = 5 ,6, 7 N=5,6,7 而言,开到 4 ∗ 4 − 1 4*4 -1 441就够了,但是在平时不计较点内存,所以统一开到 4 N 4N 4N

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值