关于满二叉树的一个证明

63 篇文章 1 订阅
21 篇文章 1 订阅

本文简单给出了在满二叉树中 内部节点数目( C i C_i Ci) = 叶子节点数目( C l C_l Cl) - 1 的两种证明方法

二叉树大家都不陌生,但是分类上可能大家就不那么熟稔了,本篇博文中提到的所谓满二叉树,定义上也有些分歧,在此我们采用如下定义:

满二叉树(Full Binary Tree),即只存在 度为 0 的节点(叶子节点)度为 2 的节点(内部节点) 的二叉树
(定义中提到的 “度” 即为二叉树节点的分支数目)

根据这个定义,以下的二叉树都是满二叉树:

bt_1

bt_2

而下面的二叉树则不是满二叉树,因为存在度为 1 的内部节点:

bt_3

满二叉树中节点数目满足以下等式:(设叶子节点的数目为 C l C_l Cl, 内部节点的数目为 C i C_i Ci)

C i = C l − 1 C_i = C_l - 1 Ci=Cl1

证明方法一

上述结论的一般证明方法是这样子的:

  • 首先考虑满二叉树的分支数目(设为 B B B)对应的节点数目:

由于除根节点外,所有分支都对应一个节点,所以我们有:

B = C i + C l − 1 B = C_i + C_l - 1 B=Ci+Cl1

  • 再次考虑满二叉树的节点数目对应的分支数目:

由于叶子节点对应 0 个分支(度为 0),内部节点对应 2 个分支(度为 2),所以我们有:

B = C i ∗ 2 + C l ∗ 0 B = C_i * 2 + C_l * 0 B=Ci2+Cl0

综合上面两式,我们即可证明结论:

C i = C l − 1 C_i = C_l - 1 Ci=Cl1

证明方法二

实际上,我们还可以使用数学归纳法来证明:

考虑基础情况(只有一个根节点(或者说一个叶子节点)):

bt_4

此时我们有:

C l = 1 , C i = 0 C_l = 1, C_i = 0 Cl=1,Ci=0

显然满足等式.

接着我们对一般情况进行归纳,由于是满二叉树的关系,所以一般情况一定满足下面的树形结构:

bt_5

图中的左右子树也都是更小规模的满二叉树.

我们设

  • 左子树中的叶子节点数目和内部节点数目分别为 C l l Cl_l Cll C l i Cl_i Cli
  • 右子树中的叶子节点数目和内部节点数目分别为 C r l Cr_l Crl C r i Cr_i Cri

于是我们有:

C l l + C r l = C l ( 1 ) C l i + C r i + 1 = C i ( 2 ) C l i = C l l − 1 ( 3 ) C r i = C r l − 1 ( 4 ) \begin{aligned} & Cl_l + Cr_l = C_l & (1)\\ & Cl_i + Cr_i + 1 = C_i & (2)\\ & Cl_i = Cl_l - 1 & (3)\\ & Cr_i = Cr_l - 1 & (4)\\ \end{aligned} Cll+Crl=ClCli+Cri+1=CiCli=Cll1Cri=Crl1(1)(2)(3)(4)

( 3 ) (3) (3) ( 4 ) (4) (4) 代入 ( 2 ) (2) (2), 我们有:

C l l − 1 + C r l − 1 + 1 = C i = > C l l + C r l − 1 = C i \begin{aligned} & Cl_l - 1 + Cr_l - 1 + 1 = C_i \\ & => \\ & Cl_l + Cr_l - 1 = C_i \end{aligned} Cll1+Crl1+1=Ci=>Cll+Crl1=Ci

再代入 ( 1 ) (1) (1), 我们即可得出结论:

C l − 1 = C i C_l - 1 = C_i Cl1=Ci

参考资料
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值