树中的叶子结点的个数 计算方法
树中的叶子结点的个数 计算方法
在学习树的时候经常会遇到计算树中叶子结点的个数的题,比如现在有这样一道题
已知在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点的个数为?
解决这道题的思路是列出一个关于各个度的结点的等式,从而根据已知条件算出度为0的结点的个数,下面具体说一下解题方法:
设树T中的结点个数为n,度为0的结点的个数为n0,度为1的结点的个数为n1,度为2的结点的个数为n2,度为3的结点的个数为n3,度为4的结点的个数为n4,则有:
n = n0 + n1 + n2 + n3 + n4
设树T中的总边数为e,因为除了根节点的入度为0,其余各节点的入度都为1,则有:
e = n - 1 = n0 + n1 + n2 + n3 + n4 - 1
又因为,n0的出度为0,n1的出度为1,n2的出度为2,n3的出度为3,n4的出度为4,所以:
e = n0 * 0 + n1 * 1+ n2 * 2 + n3 * 3 + n4 * 4
综上所述:
e = n0 * 0 + n1 * 1+ n2 * 2 + n3 * 3 + n4 * 4 = n0 + n1 + n2 + n3 + n4 - 1
n0 = n2 + n3 * 2 + n4 * 3 + 1
根据题意,n2 = 1, n3 = 10 ,n4 = 20 ,代入得:
n0 = 82
因此该树T有82个叶子结点
看完了上面的解题过程,思路应该很清晰明了吧,没懂?没关系,我们再来看一道题
一棵度为3的树中,有3度的结点100个,有2度的结点200个,有叶子结点多少个?
还是和上面一样的解题过程,我稍微简略一点写,思路都是一样的
n = n0 + n1 + n2 + n3
e = n - 1 = n0 + n1 + n2 + n3 - 1
e = n0 * 0 + n1 * 1 + n2 * 2 + n3 * 3
n0 + n1 + n2 + n3 - 1 = n0 * 0 + n1 * 1 + n2 * 2 + n3 * 3
n0 = n2 + n3 * 2 + 1
则叶子结点的个数为401个
总结
通过上面的解题方法,我们大致可以总结出一个很好用的公式:
d
n0 =( Σ n(i) * (i - 1)) + 1 (其中,i ∈ Integer,d为树的度)
i=1
我们来拿上面第二题来代入一下
根据已知的条件n0 = n2 + 2* n3 + 1 = 401
更多推荐
所有评论(0)