查找叶节点的数量

时间:2010-10-08 13:46:59

标签: data-structures tree

N-ary树为每个节点都有N个子节点。如果树有M个非叶子节点,如何找到叶子节点的数量?

2 个答案:

答案 0 :(得分:5)

首先,如果根是级别0,那么树的K级将有N^K个节点。您可以逐级递增计数器级别,直到获得M个节点。通过这种方式,您将找到由树组成的层数。叶节点的数量是最后一级的节点数 - 它是N^lastLevel

以下是一个示例:N = 3, M = 4

First level = 3^0 = 1
Second level = 3^1 = 3
1 + 3 = 4

因此我们发现树有两个级别(从0开始计算)。 答案是3^2 = 9

注意:您也可以通过注意M是几何级数的总和来直接找到级别编号:1 + 3 + 9 + 27 ... = M

希望很清楚。

答案 1 :(得分:1)

从数学上讲,节点的几何级数增加。

0级 - 1
第1级 - n
第二级 - n ^ 2
第3级 - n ^ 3
.... 第m级 - n ^ m

因此,m-1级的节点总数为1 + n + n ^ 2 + .. + n ^ m-1。

现在有一个很好的公式来计算1 + a + a ^ 2 + a ^ 3 + ... + a ^ m,这是 (1 - n ^(m + 1))/(1-n),我们称这个数量为K.

现在我们需要的是叶节点的数量是n ^ m,我们所拥有的是K.即非叶节点的总数。做一些数学公式调整你会发现
n ^ m = K *(n-1)+ 1。

e.g。让我们说在3-ary树中非叶节点的总数是40,然后使用这个公式得到叶节点的总数为81,这是正确的答案。