满k叉树的孩子节点的编号问题推导

满k叉树的孩子节点的编号问题推导_第1张图片

先复习一个等比数列的公式:

满k叉树的孩子节点的编号问题推导_第2张图片

此题的答案是:k( x -1 )  + 1 + i
 
我的解法:
解这一道题的关键是充满想象力, k叉树是自相似的。也就是说:你只需要把每一层乘以k(也就是"放大"k倍)就得到也是一个k叉树,只不过没有根,而且是每层都是原k叉树向下平移了一层。
每一层的下面一层,相当于把每一层放大k倍,也就是平移到下面一层了。
所以,在这道题目中,我要想得到下一层X编号节点所在的那个位置的编号,只需要把k (X - 1) 就得到 放大后的k叉树 X的那个位置之前的点数总和,最后再+1,因为刚才没算根。
这里有个问题,怎么利用上刚才的等比数列求和公式的 结论呢?
因为:这个k叉树 每层的元素个数都满足等比数列,第n层有k^(n-1)个元素, 前n层有Sn=1+k+……+k^(n-1)个元素
所以原始的k叉树的编号X-1,就表示编号X节点之前的元素和(X-1 = X节点之前元素S(n))
所以:       S(n+1) = q S(n) + 1      S(n+1)的解释:当前第n层的下一层的和
q => k, S(n)=>x-1:   k (x-1) +1               
 
最后再加上i表示第i个孩子了
即可得答案

你可能感兴趣的:(问题)