7
$\开始组$

给定整数$h$

$N(h)$高度小于$h$的完整二叉树的数量是多少?

在此处输入图像描述

例如$N(0)=1,N(1)=2,N(2)=5,N(3)=21$(如特拉维斯J在他的部分回答中)我找不到$N(h)$的任何表达式,也找不到合理的上界。

编辑在一个完整的二叉树(有时称为适当的二叉树法)中,除叶子外的每个节点都有两个子节点。

$\端组$
10
  • $\开始组$ 对于$n=3$,您错过了许多选项。 $\端组$ 评论 2015年3月10日11:34
  • $\开始组$ @斯努夫桑是的,你说得对,我在$h=2$中也漏掉了一个,有什么已知的公式吗? $\端组$ 评论 2015年3月10日11:39
  • $\开始组$ 这并不完全是你想要的(也许是,根据你的图片),但是有$n+1$leaves的完整二叉树的数量是$C_{n}$,第$n$-th加泰罗尼亚数字. $\端组$ 评论 2015年3月10日12:09
  • 1
    $\开始组$ 你所说的“完全二叉树”到底是什么意思?在我对“完整”的理解中,您绘制的唯一完整树是h=0、h=1和h=3c(但实际上是高度2)。你能解释一下“满”是什么意思吗。。。根据h=3c,如何定义高度。 $\端组$ 评论 2015年3月10日12:19
  • 1
    $\开始组$ 我认为“完整”的二叉树Elaqad意味着每个节点都有$2$或$0$的子节点。 $\端组$ 评论 2015年3月10日12:40

4个答案4

重置为默认值
4
$\开始组$

以下是我对这次有趣的讨论的贡献。通过节点数引入$T_{\len}(z)$高度最多为$n$的完整二叉树的OGF。现在,一棵树的高度最多为$n$,或者树的高度最大为$n-1$,或者高度正好为$n.$。后一棵树在根节点的左侧或右侧有一棵高度为$n-1的子树,或者根有两个子树的高度为$n-1$$T_{len}=T_{len-1}+2z(T_{leN-1}-T_{len-2})T_{le-n2}+z(T_$$其中$T_{\le 0}=1$和$T_{\ le 1}=z+1$观察$$T_{=n}=T_{\len}-T_{\len-1}$$一些代数产生简化形式$$T_{\len}=T_{\le n-1}+z T_{\ler n-1}^2-z T_{len-2}^2$$例如,这会为最多四棵树的节点数生成以下生成函数:$${z}^{15}+8\,{z}^{14}+28\,{z}^{13}+60\,{z}^{12}+94\,{z}^{11}+116\,{z}^{10}\\+114\,{z}^{9}+94\,{z}^{8}+69\,{z}^{7}+44\,{z}^{6}+26\,{z}^{5}+14\,{z}^{4}+5\,{z}^{3}+2\,{z}^{2}+z+1$$对于计数,计算序列$T_{len}(1)$,它会产生$$1, 2, 5, 26, 677, 458330, 210066388901, 44127887745906175987802,\\1947270476915296449559703445493848930452791205,\ldots公司$$这是OEIS A003095公司并且具有闭合形式的重复$$t_n=t_{n-1}+t_{n-1}^2-t_{n-2}^2$$$t0=1$和$t1=2$树的高度确切地$n$由$$tn-t{n-1}$$,它给出了序列$$1, 3, 21, 651, 457653, 210065930571, 44127887745696109598901,\\1947270476915296449559659317606103024276803403$$哪个是OEIS A001699公司.

备注。几年后回顾这篇文章,我们发现我们还没有使用完整二叉树的定义,例如维基百科因为我们承认树上有一个孩子是叶子。但OEIS表示,我们有正确的价值观,如何解释这一点。我们可以通过不允许叶(大小为零的树)来计算完整的二叉树,从而使$T_{\le0}(z)=0$和$T_{\tle1}(z)=z.$这将循环的起始值指定为$0$和$1$,下一个值为$2。$然而,$1$和$2$是普通二叉树的起始值,这解释了匹配值(移位序列和预加一个零项)。因此,进行了上述计算。(注意:我们将高度0作为叶的高度,将高度1作为单体的高度。)

$\端组$
2
$\开始组$

(部分回答)首先,$N(3)=21$。其次,可能更有用的是,您可以通过向高度为$h-1$的树上每个非空的最低顶点子集添加两个子元素来构造高度为$h$的所有树。所以,如果在高度$h-1$处有树$T_{1},。。。,T_{n}$和树$T_{i}$在最低级别上有$v_{i}$vertices,那么级别$h$上的树数为

$$\sum_{i=1}^{n}(2^{v_{i}-1)$$

不幸的是,现在似乎还不清楚如何计算新建树木中最低层的叶子数量。但这确实提供了一个构建所有此类树的算法。

$\端组$
1
  • $\开始组$ 非常感谢您的回答,有上界吗(我们能找到上界多项式吗),我希望它是多项式,但正如您所示,如果有上界或证明它不是多项式,这很难解决我的问题,谢谢您的帮助。 $\端组$ 评论 2015年3月10日15:08
1
$\开始组$

您可以将$T(h,b)$定义为高度为$h$且底部有$b$叶子的树的数量。然后,你的$N(h)$是$T(h,b)$中$b$的和。要得到树的高度$h+1$和底部$b$叶子,你可以选择树的高度为$h$,底部至少有$b/2$叶子,然后选择$b/2$leaves来悬挂新叶子。这给出了一个递归$$T(h+1,b)=\sum_{k=b/2}^{2^h}T(h,k){k\choose b/2}$$我们有$T(3,2)=8,T(3,14)=8、T(3,6)=4、T(3,8)=1$,得出TravisJ引用的总计$21$。然后$T(4,2)=8\cdot 2+8\cdot 4+4\cdot 6+1\cdot 8=80,T(4,4)=8\cdot 1+8\cdot 6+4\cdot 15+1\cdot 28=144,T(4,6)=8\cdot 4+4\cdot 20+1\cdot 56=168,T(4,8)=8\cdot 1+4\cdot 15+1\cdot 70=138,T(4,10)=4\cdot 6+1\cdot 56=80,T(4,12)=4\cdot 1+1\cdot 28=32,T(4,14)=8,T(4,16)=1$,总计$N(4)=651$。序列如下OEIS A001699公司其中据说接近$1.5028368…^{(2^n)}$,并给出了一些参考。

$\端组$
1
$\开始组$

让我们考虑构建高度最多为$h\geq 1$的完整二叉树的所有可能方法。根目录有$0$或$2$子目录,因此树可能只是一个节点。另一方面,根具有两个子级的完整二叉树的数量等于高度最多为$h-1$的完整二元树数量的平方。因此,我们得到了递归

\开始{align}N(0)&=1\\N(h)&=N(h-1)^2+1\text{if}h\geq 1\结束{对齐}

因此,$2^{2^{h-1}$是一个下限。另一方面,$2^{2^{2 h}}$是一个上限,因此复杂性是双指数的。我怀疑还有一个封闭的表单。

注意,$N(3)=26$与其他答案并不矛盾,因为他们认为树的高度正好是$h$。

$\端组$

你必须登录来回答这个问题。

不是你想要的答案吗?浏览已标记的其他问题.