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

本文介绍了如何通过编程解决完全二叉树的叶子节点数问题。作者在招聘笔试中遇到该问题,意识到程序员应利用编程解决此类问题,而非手动计算。根据二叉树的性质推导出公式,并指出对于完全二叉树,度数为1的节点数只有0或1,从而计算出叶子节点数。最后,展示了用iOS程序计算的结果。
摘要由CSDN通过智能技术生成

前一段参加招聘笔试,遇到了这道题,当时连完全二叉树的定义都不太记得了,虽然我答对了但是感觉费了好长时间,心想作为程序员这种题应该编程解决,不要人去算,这也是我最近的领悟,程序就是用来解决问题的,所以我又看了一下数据结构二叉树那一章,推导了一下,发现其实挺简单的。

我们设度数为0,1,2的结点分别为n0, n1, n2, 总的结点数为 n。则有:

n = n0 + n1 + n2; 

另,根据二叉树的性质有:

n0 = n2 + 1;

由上面的两个式子,可以推导出:

n0 = (n - n1 + 1) / 2;

再因为完全二叉树的性质可以得出:

n1 = 0 或 1;

由此可得出,

n0 = (n + 1) / 2;     当n1 = 0时;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值