前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于满二叉树的一个证明

关于满二叉树的一个证明

作者头像
用户2615200
发布2019-08-14 14:16:20
6710
发布2019-08-14 14:16:20
举报
文章被收录于专栏:tkokof 的技术,小趣及杂念

本文简单给出了在满二叉树中 内部节点数目(CiC_iCi​) = 叶子节点数目(ClC_lCl​) - 1 的两种证明方法

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

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

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

bt_1
bt_1
bt_2
bt_2

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

bt_3
bt_3

满二叉树中节点数目满足以下等式:(设叶子节点的数目为 ClC_lCl​, 内部节点的数目为 CiC_iCi​)

Ci=Cl−1 C_i = C_l - 1 Ci​=Cl​−1

证明方法一

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

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

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

B=Ci+Cl−1 B = C_i + C_l - 1 B=Ci​+Cl​−1

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

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

B=Ci∗2+Cl∗0 B = C_i * 2 + C_l * 0 B=Ci​∗2+Cl​∗0

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

Ci=Cl−1 C_i = C_l - 1 Ci​=Cl​−1

证明方法二

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

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

bt_4
bt_4

此时我们有:

Cl=1,Ci=0 C_l = 1, C_i = 0 Cl​=1,Ci​=0

显然满足等式.

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

bt_5
bt_5

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

我们设

  • 左子树中的叶子节点数目和内部节点数目分别为 CllCl_lCll​ 和 CliCl_iCli​
  • 右子树中的叶子节点数目和内部节点数目分别为 CrlCr_lCrl​ 和 CriCr_iCri​

于是我们有:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年08月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 证明方法一
  • 证明方法二
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档