数据结构 树笔记-3 完全二叉树的性质

本文介绍了完全二叉树的基本性质,包括通过总结点数确定树的高度的方法,以及如何通过节点编号判断节点是否存在左右子节点。同时,文章还讨论了如何将完全二叉树存储在一维数组中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完全二叉树的性质

1.给定完全二叉树的总结点数,求树高

k层完全二叉树的各层结点数:

1层——1=1

2层——2^1=2

3层——2^2=4

......

k-1层——2^k-2

k层——1 ~ 2^k-1

所以k层完全二叉树的总结点数最少[2^0+2^1+......+2^k-2]+1=[2^k-1-1]+1=2^k-1

所以k层完全二叉树的总结点数最多2^0+2^1+......+2^k-1=[2^k-1-1]+1=2^k-1

2^k-12为底向下取对数 等于 k-1k-1+1=k这才是完全二叉树的层数

2^k-12为底向下取对数 等于 k-1k-1+1=k这才是完全二叉树的层数

所以,如果给定一棵完全二叉树的总结点数n,通过表达式n2为底取对数并向下取整+1”就可以得到它的高度。

 

2.

对一棵结点总数是n的完全二叉树从上至下,从左至右进行1-n编号

根结点的下标一定要是1不是0,才能保证编号是2i和2i+1的结点是编号为i的结点的左孩子和右孩子

    如果编号是i的结点有左孩子,那么这个结点的左孩子编号是2i

如何判断有左孩子:

2i > n,说明编号是i的结点没有左孩子

2i=n 或者 2i<n,说明编号是i的孩子有左孩子

如果编号是i的结点有右孩子,那么这个结点的左孩子编号是2i+1

如何判断有右孩子:

2i+1 > n,说明编号是i的结点没有右孩子

2i+1=n 或者 2i+1<n,说明编号是i的孩子有右孩子

 

反之,编号是i的结点的父结点编号i/2)结果向下取整

说明:

如果i是整型数,那么

i/2)结果向下取整 = i/2

如果i是浮点型如float或者double,那么

    (i/2)结果向下取整 = i/2的整数部分

     这个性质用于把一棵完全二叉树存放在一个一维数组中,这样可以通过对数组元素下标的操作来操作这棵树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值