给定具有 n 节点的完整且完整的二叉树,节点具有的平均后代数是多少?例如,根节点有 n - 1个后代,每个叶子节点有0个后代,但考虑到所有节点,平均值是多少?
答案 0 :(得分:0)
让我们稍微改变你的问题 :我们称之为“后代”将是后代的数量,包括节点本身。
一片叶子有1个后代,它的父母有3个后代,然后是7个,然后是15个等等。这些数字是种类2 ^ k - 1,其中k是从树的底部开始的等级数(k = 1叶子)。
对于K级别,您的树中显然有2 ^ K-1个节点;因为你调用了这个值 n ,你有n = 2 ^ K-1和K = log2(n + 1)。
仍然像我之前所做的那样调用后代(稍后会看到你的确切问题),你有1个后代用于2 ^(K-1)个节点(叶子),3个后代用于2 ^(K-2)个节点, ...直到n ^ 2(KK)= 1节点的后代。
后代的平均数量为:
Sum(k=1,K, 2^(K-k) * (2^k-1) ) / n
根据您对“后代”的定义(不包括节点本身),您必须减去1:
Sum(k=1,K, 2^(K-k) * (2^k-1) ) / n - 1
通过替换K,你得到:
Sum(k=1,log2(n+1), (2^k-1)(n+1) / 2^k ) / n - 1
使用Pari-GP程序,我输入:
f(n)=sum(k=1,round(log(n+1)/log(2)), (2^k-1)*(n+1) / 2^k ) / n - 1
我得到了:
f(1)=0
f(3)=2/3
f(7)=10/7
f(15)=34/15
看起来像A036799(n) / n。如果序列实际上是相同的(我没有仔细检查),你可以编写更简单的表达式(没有总和):
f(n)= ((log(n+1)/log(2)-2)*(n+1)+2)/n