证明二叉树最多具有


14

我试图证明具有n个节点的二叉树最多具有\ left \ lceil \ frac {n} {2} \ right \ rceil叶子。我将如何通过归纳法做到这一点?nn2

对于那些最初关注堆的人来说,它已经移到了这里


3
首先,请注意,我们可以在此处使用LaTeX。点击“修改”,查看我的操作方式。其次,我没有看到归纳法。您在附近扔了一些数字,但没有证明结构,也没有与堆的关系。你可以改善吗?最后,这种说法是错误的:一个有序列表满足了heap属性,并且只有一个叶子。您是否遗漏了一些假设?
拉斐尔

@Kaveh的编辑是您的初衷,即“最多”吗?
拉斐尔

@Raphael,再次阅读问题,我认为可能与每个内部节点恰好有两个子代的堆有关(在这种情况下,原始问题很有意义,并且声明是正确的,或类似的东西)。
卡夫

1
@Kaveh啊,是的,我很困惑。堆的节点最多有两个子节点(因此
带有

1
我知道了。通过精确地提出权利要求,确实不需要进一步的假设。该属性实际上适用于所有二叉树。
拉斐尔

Answers:


7

我现在假设问题如下:

给定具有节点的二叉树,请证明它最多包含叶子。ñnn2

让我们使用树定义。对于这样的树,令为的节点数,为的叶数。Ť Ñ Ť Ť Ť ŤTree=EmptyLeafNode(Tree,Tree)TnTTlTT

通过归纳法这样做是正确的,但是您将需要遵循树结构的结构归纳法。对于树木,这通常是对树木的高度 的完全归纳。h(T)

感应锚有两个部分。首先,对于我们有其中;索赔显然适用于空树。对于,即,我们同样具有,因此该声明适用于叶子。Ť = Ë p Ŷ Ť = Ñ Ť = 0 ħ = 1 Ť = 大号Ë 一个˚F Ť = 1 = Ñ Ťh(t)=0T=EmptylT=nT=0h(t)=1T=LeaflT=1=nT2

归纳假设是:假定该权利要求适用于所有(二进制)树木用,任意的而非固定的。ħ Ť ķ ķ 1Th(T)kk1

用于感应步骤中,考虑任意的二进制树用。作为,和。由于和也是二叉树(否则不会是)和,归纳假设适用并具有ħ Ť = ķ + 1 ķ 1 Ť = Ñ Ö d ë大号- [R ñ Ť = Ñ 大号 + ñ - [R + 1 大号ř Ť ħ 大号ħ [R ķTh(T)=k+1k1T=Node(L,R)nT=nL+nR+1LRTh(L),h(R)k

lLnL2 and lRnR2.

由于所有叶子都在或,所以我们有大号řTLR

lT=lL+lRnL2+nR2nL+nR+12()=nT2

标记为的不等式可以通过(四种方式)是否区分区分。通过归纳的力量,得出结论。()nL,nR2N


作为练习,您可以使用相同的技术来证明以下语句:

  • 每个高度为理想二叉树都有节点。h2h1
  • 每个完整的二叉树都有奇数个节点。

2

这个问题让我有些困惑。如果您对最多度的树感兴趣,这是Wikipedia想要的,那么我们会遇到一个问题,即单个边具有节点和叶子,但是。无论如何,这里有一个简单的论点。 3n=2n=2n/2=1

令为具有节点和叶子的树。由于是一棵树,所以有边,并对其进行两次计数,我们看到 表示 并且这两个紧上面的-vertex示例。我猜想,如果您想假设存在一个2度和,那么您可以优化此参数以得到 ,这正是您要查找的,而当树已满。TnLTn1

2n2L+3(nL)
2Ln+2
n3
2Ln+1

我猜我们在这里默默地假设有根树。维基百科也这样做。
拉斐尔

1
维基百科有点模棱两可的说法:“在树外,通常存在对“根”节点(所有节点的祖先)的引用(如果存在)。无论如何,这个论点似乎值得写下来,因为它是不同的并且很容易。
2012年

如果您继续阅读,所有方面都是有针对性的,他们谈论的是“孩子”和“父母”。在没有根的树中,这是没有意义的。由此,叶将与出度为0的节点
圣拉斐尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.