叶子结点和分支节点_怎么计算完全二叉树叶结点个数 数据结构

本文介绍了如何计算完全二叉树的叶子结点个数。在完全二叉树中,叶子结点数n0与度为1和2的节点数有关,通过公式n0 = n2 + 1和n = n0 + n1 + n2可以推导出,当n为奇数时,n0 = (n+1)/2;当n为偶数时,n0 = n/2。此外,完全二叉树的性质决定了度为1的节点只有0或1个。

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

答案

设叶子节点数为n0, 度为1的节点数为n1, 度为2的节点数为n2, 总节点为n

  • 当n为奇数时 n0= (n+1)/2
  • 当n为偶数 n0= n/2

数据结构重修, 快要结课了, 在家苦X的复习ing......

首先得知道什么是完全二叉树

emmm先看看满二叉树(完全二叉树是由满二叉树而引出来的)

满二叉树

高度为h, 由2^(h)-1个节点构成的二叉树称为满二叉树

6965312e8cf81d20e7a614461aa091c8.png
(图片来源网络-侵删)

完全二叉树

若设二叉树的深度为h 除第 h 层外 其它各层 1~(h-1) 的结点数都达到最大个数(即1~(h-1)层为一个满二叉树) 第 h 层所有的结点都连续集中在最左边 就是完全二叉树

2c4e8eb76ff3ecf77416a14ced1accf7.png
(图片来源网络-侵删)

正题

对于一棵二叉树, 设叶子节点数为n0, 度为1的节点数为n1, 度为2的节点数为n2

度为2的节点有2个分支, 度为1结点有1个分支, 度为0的节点有0个分支

n0 = n2 + 1(公式1)

证明:

(度为2的节点有2个分支, 度为1结点有1个分支, 度为0的节点有0个分支)
总分支数=2*n2 + n1
另外分支数 = n0 + n1 + n2 - 1 (每个结点上面对应一个分支,除了根节点上面没有分支)

因此 2*n2 + n1 = n0 + n1 + n2 - 1 得 n0 = n2 + 1

假设n为完全二叉树的结点总数, 则有 n=n0+n1+n2(公式2)

结合公式 1和2 有 n0=(n-n1+1)/2

又因为 n1 = 0 或者 n1 = 1 只有这两种情况(完全二叉树的性质呀--只有一个分支的节点要么有, 要么没有, 剩下的全是两个分支的节点和0分支的叶子节点)

  • 当n为奇数时(即度为1的节点为0个) n0= (n+1)/2
  • 当n为偶数(即度为1的节点为1个) n0= n/2
  • n1,n2,都可以求了吧
所以一般我们的做题思路就是,
先看总节点个数, 是奇还是偶, 
奇数,可知 n1 = 0; 再计算n0,  
此时n0, n1都知道了,  n2 = n-n1-n0; 
偶数同上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值