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

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

此题的答案是: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个孩子了
即可得答案

转载于:https://www.cnblogs.com/sharpstill/archive/2012/12/10/2811189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值