课程学习--算法总结:二叉树(第1期)--完全二叉树(为什么是2n+1?)

二叉树—完全二叉树子节点编号证明(为什么2n+1)

一、 左子树

求证:完全二叉树中任何一层的最左节点的编号为n,则其左子节点编号为2n+1,其右子节点编号为2n+2(编号从0开始)。

证明:
因为

  1. 完全二叉树第n层的节点数:2^(n-1)
  2. 所以第n层最左边的节点编号:2^(n-1)-1
  3. 第n层最左边节点的左子树节点编号(即第n+1层最左边的节点编号):2^(n)-1
  4. 2*(2^(n-1)-1)+1 = 2^(n)-1

所以
完全二叉树中任何一层的最左节点的编号为n,则其左子节点编号为2n+1,其右子节点编号为2n+2。

二、 任意节点

求证:完全二叉树任意节点编号n,则其左子节点为2n+1,其右子节点编号为2n+2(编号从0开始)。

证明:
因为

  1. 任取一个节点N,设编号为n。
  2. 设N所在层L的最左节点为M,编号为m。
  3. 显然,L层中位于N左边的节点为n-m个。
  4. N的左子节点N_Left位于L+1层,第L+1层中在N_Left前面的节点数为2(n-m)。
  5. 由证明1得,L+1层的最左节点为2m+1。

所以
N_Left的编号为2m+1+2(n-m),即2n+1。得证!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

charliejohn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值