证明具有n个叶子的二叉树的高度至少为log n

时间:2017-08-22 12:16:15

标签: logic binary-tree nodes proof induction

我已经能够创建一个证明,表明树中的最大总节点数等于n = 2 ^(h + 1) - 1,逻辑上我知道二叉树的高度是log n(可以把它画出去看)但是我在构建一个正式的证据时遇到了麻烦,这个证据表明一棵树有n片叶子的树至少有“log”。我遇到或能够组合在一起的每个证据总是处理完美的二叉树,但我需要适合任何情况的东西。有什么提示可以引导我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:5)

引理:高度np.append(train_generator.classes)树中的树叶数量不超过h

证明:证据是2^h上的归纳。

基本案例:对于h,树只包含一个根节点,也是一个叶子;这里,h = 0,视需要而定。

归纳假设:假设所有高度n = 1 = 2^0 = 2^h或更低的树都少于k个节点。

归纳步骤:我们必须证明高度为2^k的树木的叶子不超过k+1。考虑根的左右子树。这些树的高度不超过2^(k+1),比整棵树的高度少一棵。因此,根据归纳假设,每个叶子最多有k个叶子。由于叶子的总数只是根子树叶子数的总和,我们根据需要有2^k。这证明了这一说法。

定理:带有n = 2^k + 2^k = 2^(k+1)树叶的二叉树的高度至少为n

我们在引理中已经注意到,仅由根节点组成的树有一个叶子和高度为零,因此在这种情况下声明是正确的。对于具有更多节点的树,证明是矛盾的。

log(n) n = 2^a + b。现在,假设树的高度小于0 < b <= 2^a,这与我们打算证明的定理相反。然后高度最多为a + 1。通过引理,高度为a的树中的叶子的最大数量为a。但是我们的树有2^a个叶子,因为n = 2^a + b > 2^a;矛盾。因此,高度小于0 < b的假设必定是不正确的。这证明了这一说法。