数据结构与算法—论证任意二叉树度数为2的节点的个数等于叶节点个数减1

来源:互联网 发布:中文url seo 编辑:程序博客网 时间:2024/05/07 03:10

对于二叉树来说,节点按度数来分不外乎3种:度数为2的节点、度数为1的节点、叶节点(度数为0的节点)


既然要讨论度数和节点个数的关系。那不妨试试看能否找到总度数和节点总数的关系

1“度”其实就是1条连接父节点和子节点的直线。如果我们把每1“度”和相应直线对应的子节点联系起来。那么派生出1“度”,就会多出1个节点。思路铺开来想,从根节点开始,到最后树成型。派生出的“度”和派生出的节点数一定相等。那么就得出了总度数和节点总数的关系:

节点总数=总度数+1(整棵树的根节点)

设度数为2的节点数为X2,度数为1的节点数为X1,度数为0的节点数为X0。那么久可以得出如下关系式:

             X2+X1+X0=2X2+X1+1;

推出     X2=X0-1;

也就是我们结论:度数为2的节点个数等于叶节点数减1啦;


另外,顺便记录下另外2个结论:

1. 满二叉树定理:非空满二叉树的叶节点数等于其分支节点数加1。

如果在已知前面论证的结论下来考虑这个定理:由于满二叉树所有分支节点都是度数为2的节点,那么结论自然成立。

如果并不知道上面已经论证的结论也没关系。考虑一棵只有3个节点的满二叉树(1个根节点和两个叶子节点):此结论满足。从这开始思考。每产生1个分支节点(牢记度数为2)。便会多出1个叶子节点。为什么呢?因为要产生一个分支节点,那么这个新的分支节点必然是原来的叶子节点。而新的分支节点又有2个新的叶子节点。因此叶子节点的总数先是减少1,然后加2。相互抵消自然就是加1了。扩展开来思考,在原来结论的基础上,由于分支节点和叶子节点是等量增长。那么结论自然也还是成立了。


2. 一棵非空二叉树空子树的数目等于其节点数目加1

考虑只有1个根节点的二叉树:它有2个空子树,1个节点。因此结论成立。从这里开始考虑。每产生1个节点。空子树便会先减少1,然后增加2。就和上面结论中每多出1个分支节点,叶子节点的变化一样。因此在原来结论的基础上,由于空子树和节点等量增长。所以结论成立。

0 0
原创粉丝点击