7

关于满二叉树的一个证明

 3 years ago
source link: https://blog.csdn.net/tkokof1/article/details/98794458
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
关于满二叉树的一个证明_tkokof1的专栏-CSDN博客

本文简单给出了在满二叉树中 内部节点数目( 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​=Cl​−1

证明方法一

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

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

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

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

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

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

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

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

C i = C l − 1 C_i = C_l - 1 Ci​=Cl​−1

证明方法二

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

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

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 )

amp;Cll+Crl=Clamp;Cli+Cri+1=Ciamp;Cli=Cll−1amp;Cri=Crl−1amp;(1)amp;(2)amp;(3)amp;(4)amp;Cll+Crl=Clamp;(1)amp;Cli+Cri+1=Ciamp;(2)amp;Cli=Cll−1amp;(3)amp;Cri=Crl−1amp;(4)
​Cll​+Crl​=Cl​Cli​+Cri​+1=Ci​Cli​=Cll​−1Cri​=Crl​−1​(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

amp;Cll−1+Crl−1+1=Ciamp;=amp;Cll+Crl−1=Cigt;amp;Cll−1+Crl−1+1=Ciamp;=gt;amp;Cll+Crl−1=Ci
​Cll​−1+Crl​−1+1=Ci​=>Cll​+Crl​−1=Ci​​

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

C l − 1 = C i C_l - 1 = C_i Cl​−1=Ci​


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK