完全二叉树的array表示式及其证明

完全二叉树是一种特殊的二叉树,其除了最底层的叶节点外都填满,并且最底层叶节点从左到右无空缺。使用数组存储时,节点序号从1开始,第i个节点的左子节点为2i,右子节点为2i+1,父节点为i/2。文章还探讨了节点高度与其左右子节点编号的关系。
摘要由CSDN通过智能技术生成

Complete Binary tree完全二叉树是整颗binary tree除了除了最底层的叶节点之外,都是填满了的,并且最底层的叶节点由左至右又不存在空隙。
根据这个性质我们就可以用数组来存储这样一个树结构。
其中很重要的一点是我们的数组的0号位置是不存储东西的,我们的节点序号是从1开始的。
这样我们就可以让第i个节点的左子节点的序号为2i,右子节点的序号为2i + 1,同样的,第i个节点的父节点为i/2
接下来是证明:
假设第i个节点的高度为:h(从0开始)
那么前h层共有:2h+1 - 1个节点
前h - 1层共有: 2h - 1个节点
那么在h层且处在i点右边的共有:2h+1 - 1 - i个节点
在h层且处在i点左边的有 i - 2h个节点
所以第i个节点的左节点编号为 i + 2(i - 2h) + 2h+1-1-i + 1 = 2i

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值