一个完全二叉树的问题(2013年校园招聘小米笔试题)

题目:已知一个完全二叉树的结点数为770,问完全二叉树的叶子结点数为多少?

声明:本人只是一个初学者,如果解答有问题,请指正

说明:结点的编号从1开始编号,层数也是从1开始编号

解题思路:

一、根据二叉树和完全二叉树的性质:

1.在二叉树的第i层最多有2的(i-1)次方

2.具有n个结点的完全二叉树的深度为(log2n)+1

3.如果第i个结点(i>1),则其双亲结点为[i/2]

4.完全二叉树的叶子结点在最后一层或最后两层

二、

此完全二叉树的深度为:(log770)+1=12

第770个结点的父结点为770/2=385

因为最后一个结点为偶数,所以第385个结点只有一个左孩子

故此二叉树不是满二叉树,故叶子在倒数第一、二层

倒数第二层(即第11层)的第一个结点编号为2的(11-1)次方=256

因为是完全二叉树,故倒数第二层的结点数达到最多状态:

2的(11-1)次方=256个结点

在倒数第二层结点中拥有孩子的个数为:

385-256+1=130

故在倒数第二层的叶子数为:

256-130=126

最后一层的叶子数为:

130*2-1=259(减去1是因为第385个结点只有一个左孩子)

故叶子数为:126+259=385




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值