N-ary树为每个节点都有N个子节点。如果树有M个非叶子节点,如何找到叶子节点的数量?
答案 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,这是正确的答案。