0. 简单结论

  • 对于堆,子树的最大节点数为 2/3n;(树的最底层恰好半满)

    • 0 层节点数:20=120=12^0 = 1
    • 1层节点数:21=221=22^1=2
    • m-1 层节点数:2m−12m−12^{m-1},一半有左右孩子,2m−22m−22^{m-2},左右孩子也即底部的叶子节点的数量 2m−12m−12^{m-1};
      • 前 m-1 层(排除掉最底层)节点数为 2m−12m−12^m-1,前 m−1m−1m-1 层,左边节点右边节点 (2m−1)/2(2m−1)/2(2^m-1)/2;

1. 数学归纳法

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

  • 高度为 nnn 的二叉树,叶子结点不多于 2n" role="presentation">2n2n2^n。

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

    • n=0n=0n=0,只有一个根节点,则叶子结点也为此根节点,为 1,不多于 20202^0
    • 令高度为 kkk,叶子结点不多于 2k" role="presentation">2k2k2^k,我们需证明:高度为 k+1k+1k+1 时,叶子结点不多于 2k+12k+12^{k+1}

      高度为 k+1k+1k+1 时,考虑其左右孩子,则其左右孩子(也即左右子树),高度不高于 kkk,则左右孩子叶子节点数也均不高于 2k" role="presentation">2k2k2^k,即左子树,树高不高于 kkk,叶子结点数不高于 2k" role="presentation">2k2k2^k,右子树,树高不高于 kkk,叶子结点数不高于 2k" role="presentation">2k2k2^k,则总的叶子节点数:≤2k+2k=2k=1≤2k+2k=2k=1\leq 2^k+2^k=2^{k=1}

2. 二叉堆

  • 任意一个正整数 nnn,均可拆分为 n=(2m−1)+k" role="presentation">n=(2m−1)+kn=(2m−1)+kn=(2^m-1)+k(mmm 为能取得的最大整数),对于包含 n" role="presentation">nnn 个节点的堆,前 m−1m−1m-1 层的节点数为 ∑m−1i=02i=2m−1∑i=0m−12i=2m−1\sum_{i=0}^{m-1}2^i=2^m-1,最底层有 kkk 个叶子节点,并非整个二叉树有 k" role="presentation">kkk 个叶子节点;
  • 高度为 hhh 的堆中,元素个数最多最少分别是多少?

    考虑高度为 h−1" role="presentation">h−1h−1h-1 和高度为 hhh 的满二叉树。

    • 对于高度为 h−1" role="presentation">h−1h−1h-1 的满二叉树,树中节点的个数为:∑h−1i=02i=2h−1∑i=0h−12i=2h−1\sum_{i=0}^{h-1}2^i=2^h-1(全1二进制数),
    • 高度为 hhh 的满二叉树,树中节点个数为:∑i=0h2i=2h+1−1" role="presentation">∑hi=02i=2h+1−1∑i=0h2i=2h+1−1\sum_{i=0}^{h}2^i=2^{h+1}-1

    则高度为 h−1h−1h-1 满二叉树节点数+1,即 2h2h2^h 为 高度为 hhh 堆节点个数最少的情况;高度为 h" role="presentation">hhh 满二叉树的节点数,即为高度为 hhh 的堆中,元素个数最多的情况;

    即任意高度为 h" role="presentation">hhh 的堆中,其包含的节点数范围:[2h,2h+1−1][2h,2h+1−1][2^h, 2^{h+1}-1]

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

  1. K 凸函数的一些性质和相关证明

    一.K 凸函数的定义: 定义1 ∀a,b>0\quad\forall~ a, b>0∀ a,b>0 K+f(a+x)−f(x)−a{f(x)−f(x−b)b}≥0K+f(a+x)-f ...

  2. 凸优化理论(一)深入理解仿射集,凸集,锥等定义及相关证明

    文章目录 1:仿射集相关定义与证明 2:相关子空间与性质证明 3:线性方程组的解集与化零空间 4:任意集合构建最小仿射集-仿射包 5:凸集相关:凸包-凸组合 6:锥 Cone与凸锥 Convex Co ...

  3. 用数学归纳法证明二叉树的先序遍历序列和中序遍历序列可以唯一确定一颗二叉树

    用数学归纳法证明二叉树的先序遍历序列和中序遍历序列可以唯一确定一颗二叉树. 首先说明:思想来自文都考研洪老师.包括逻辑框架的搭建,此篇文章为框架搭建完成后将细节补充完整. 首先,用到的数学的证明思想是 ...

  4. 浅谈特征方程及相关证明

    前言 特征方程应该是大学里的内容,但最近做题的时候遇到了,就想把我的一点心得和大家分享一下. 但由于鄙人水平有限,故以下只讨论二阶常系数线性齐次递推式. 问题 已知 f ( n ) = c 1 ∗ f ...

  5. 离职相关证明办理(珠海)

    主要看下一家公司的要求,比如: 离职证明信(或劳动合同解约通知书).身份证.毕业证.学位证.体检报告.市内干部档案调动.求职登记卡(与市内干部调动是2选1).计划生育证明 首先是计划生育证明,因为干部 ...

  6. 【数据结构】二叉树及其相关操作

    二叉树的定义 二叉树是一个由结点构成的有限集合,这个集合或者为空,或者由一个根节点及两棵互不相交的分别称作这个根节点的左子树和右子树的二叉树组成. 二叉树并非一般的树形结构的特殊形式,它们是两种不同的 ...

  7. 面试基础算法及编程 第三弹(树(二叉树)相关:主要考察指针相关的操作)

    // # -*- coding:utf-8 -*- // # @Author: Mr.chen(ai-chen2050@qq.com) // # @Date: 2018-08-17 16:32:55 ...

  8. 二叉树的相关操作(c语言)

    二叉树的相关操作:包括先序序列+中序序列建树丶后序序列+中序序列建树丶层次序列+中序序列建树:先序遍历丶中序遍历丶后序遍历丶层次遍历:二叉树的深度及最大宽度:度分别为0,1,2的节点个数以及总结点个数 ...

  9. C语言 二叉树的相关操作

    C语言 二叉树的相关操作 // 头文件 #ifndef __BITREE_H__ #define __BITREE_H__ #define _CRT_SECURE_NO_WARNINGS #inclu ...

最新文章

  1. 一些关于iText和iTextSharp的旧闻(some old news about iText and iTextSharp)
  2. 洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)
  3. OpenCV中像素逻辑运算:逻辑或运算
  4. MongoDB管理:慎用local、admin数据库
  5. D盘提示RAW文件如何找回
  6. cnn池化层输入通道数_(pytorch-深度学习系列)CNN中的池化层-学习笔记
  7. Swift开发图解入门
  8. 自定义条件查询_数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效...
  9. android布局自适应小示例(用户反馈界面)
  10. java 泛型的问题_java 泛型问题?
  11. java并发编程实践学习(二)由可重入锁想到的
  12. Android Studio User Manual
  13. 遥感水文前景_遥感水文
  14. phpstudy的基本使用方法
  15. 色彩心理学在网站设计中的运用
  16. EMC的青青子衿及其它
  17. PHPUnit 入门
  18. ofo押金是否可以起诉_是否可以因应用程序中的错误而被起诉?
  19. 计算机以一级上级模拟试题,计算机一级模拟试题带答案
  20. Nagios汉化页面

热门文章

  1. Go 1.8中值得关注的几个变化
  2. Android ListView常用用法(二)
  3. C#图片处理之:图片缩放和剪裁
  4. android获取上下文对象,如何在Android服务类中获取上下文
  5. oracle das系统,分布式声波传感系统DAS
  6. linux端口扫描脚本ip段,shell脚本结合iptables防端口扫描的实现
  7. 技术文件服务器搭建,搭建文件服务器_mob604756e49326的技术博客_51CTO博客
  8. sql判断时间大于0点_Java秒杀系统实战系列-数据库级别Sql的优化与代码的调整
  9. 2018 蓝桥杯省赛 B 组模拟赛(五)题 F题
  10. LeetCode 139. 单词拆分(动态规划)