【证明】—— 二叉树的相关证明

0. 简单结论

  • 对于堆,子树的最大节点数为 2/3n;(树的最底层恰好半满)
    • 0 层节点数: 20=1 2 0 = 1
    • 1层节点数: 21=2 2 1 = 2
    • m-1 层节点数: 2m1 2 m − 1 ,一半有左右孩子, 2m2 2 m − 2 ,左右孩子也即底部的叶子节点的数量 2m1 2 m − 1
      • 前 m-1 层(排除掉最底层)节点数为 2m1 2 m − 1 ,前 m1 m − 1 层,左边节点右边节点 (2m1)/2 ( 2 m − 1 ) / 2

1. 数学归纳法

Proof that a binary tree with n leaves has a height of at least log n

  • 高度为 n n 的二叉树,叶子结点不多于 2n

    数学归纳法,证明三部曲:

    • n=0 n = 0 ,只有一个根节点,则叶子结点也为此根节点,为 1,不多于 20 2 0
    • 令高度为 k k ,叶子结点不多于 2k,我们需证明:高度为 k+1 k + 1 时,叶子结点不多于 2k+1 2 k + 1

      高度为 k+1 k + 1 时,考虑其左右孩子,则其左右孩子(也即左右子树),高度不高于 k k ,则左右孩子叶子节点数也均不高于 2k,即左子树,树高不高于 k k ,叶子结点数不高于 2k,右子树,树高不高于 k k ,叶子结点数不高于 2k,则总的叶子节点数: 2k+2k=2k=1 ≤ 2 k + 2 k = 2 k = 1

2. 二叉堆

  • 任意一个正整数 n n ,均可拆分为 n=(2m1)+k m m 为能取得的最大整数),对于包含 n 个节点的堆,前 m1 m − 1 层的节点数为 m1i=02i=2m1 ∑ i = 0 m − 1 2 i = 2 m − 1 ,最底层有 k k 个叶子节点,并非整个二叉树有 k 个叶子节点;
  • 高度为 h h 的堆中,元素个数最多最少分别是多少?

    考虑高度为 h1 和高度为 h h 的满二叉树。

    • 对于高度为 h1 的满二叉树,树中节点的个数为: h1i=02i=2h1 ∑ i = 0 h − 1 2 i = 2 h − 1 (全1二进制数),

    • 高度为 h h 的满二叉树,树中节点个数为:i=0h2i=2h+11

    则高度为 h1 h − 1 满二叉树节点数+1,即 2h 2 h 为 高度为 h h 堆节点个数最少的情况;高度为 h 满二叉树的节点数,即为高度为 h h 的堆中,元素个数最多的情况;

    即任意高度为 h 的堆中,其包含的节点数范围: [2h,2h+11] [ 2 h , 2 h + 1 − 1 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值