树与二叉树——二叉树中计算叶子结点个数问题

1、已知完全二叉树具有967个结点,则其叶子结点个数为:

详解:

首先明确一点该二叉树是一棵二叉树,那可以使用二叉树的一些性质。

从第一层开始计算每层的节点个数:1,2,4,8,16,32,64,128,256,512,1024...

将前9层的结点数量全部加起来有511个,如果加上第十层1024,则超过967,所以该完全二叉树肯定是有十层的,所以叶子结点分布在第9层和第10层,且第10层全部都是叶子结点。

设第9层的叶子个数为b,第9层的分支结点个数为a;

由于是完全二叉树,又该树有10层,所以第9层肯定有2^(9-1) = 256个结点,则有关系式:

a + b = 256    ---------------(1)

又第9层的分支结点个数为a,那么第10层的叶子个数为2*a, 或者2*a-1 个,对于这两种情况,可以根据总的结点个数来确定,因为967是一个奇数,又第1层根节点只有一个,总的结点个数减去1,则为966,是一个偶数,所以第10层的叶子个数肯定为2*a个。

已知前9层共有1+2+4+8+16+32+64+128+256 = 511个结点,第10层有2*a个结点,所以结点总数为前9层的总数加上第10层的个数,则有关系式:

2*a + 511 = 967  ---------------(2)

结合关系式(1)(2),可解得a = 228, b = 28,

叶子结点总数为第9层的叶子数加上第10层的叶子数:b + 2*a = 28 + 2 * 228 = 484。

 

 

2、在一棵度为4的树T中,如有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T中的叶子结点个数为:

解:设结点总数为n,叶子结点个数为m。

则结点总数: n = 20 + 10 + 1 + 10 + m        ---------------(1)

还有一个关系式是关于结点总数和总度数的。

假如将“度”理解为一根绳子,对于每一棵树,我们都很清楚,每一个结点都是由一个度牵引着的,除了根节点这个特殊结点没有被度牵引。所以,总结点数是总的度数加上根节点的数目,而根节点只有一个,所以总结点数 = 总的度数 + 1,由此,可以得到下面的结点总数和度总数的关系式:

n = 20*4 + 10*3 + 1*2 + 10*1 + m*0  + 1      ---------------(2)

联合关系式(1)(2),可解得m = 82。

 

3、一棵度为3的树中,有3度结点100个,有2度结点200个,则叶子结点个数为:

解:虽然这棵树不是二叉树,但是有些性质也是适用的。其中,最重要的一个性质是结点总数和总度数的关系。

设1度结点共有a个,叶子结点共有b个,总的结点个数为n,则有以下关系式:

n = 100 + 200 + a + b

n = 3 * 100 + 2 * 200 + 1 * a + 0 * b + 1

联合以上两个关系式可以解得 b = 401,即叶子个数为401个。

 

总结:

大部分关于二叉树的计算问题,只要仅仅抓住二叉树和树的性质,基本上都能很快解决。

所以对于二叉树的性质要非常熟悉,不仅仅要知道性质的内容,也要知道性质的推倒过程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章