完全二叉树的高度为什么是对lgN向下取整呢?

说明一下这里的高度:只有根节点的树高度是0。

设一棵完全二叉树节点个数为N,高度为h。所以总节点个数N满足以下不等式:

1 + 21 + 22 +……+ 2h-1 < N <= 1 + 21 + 22 +……+ 2即 2h - 1 < N <= 2h+1 - 1,所以 2h < N+1 <= 2h+1,两边同取以2为底的对数得 h < log2(N+1) <= h+1。


若 N+1 = 2k ,此时完全二叉树为满二叉树,解上述不等式得 h < k <= h+1,所以 k-1 <= h < k,所以 h = k-1。而 log2N = log2(2k -1),又因为比 2k -1 小且离其最近的2的幂是 2k-1 

所以 log2N> log2(2k-1) = k-1,因此对 log2N 向下取整即为 k-1,即二叉树的高度等于对 log2N 向下取整。


若 N+1 不等于2的幂,设2k-1 < N+1 < 2k,所以 k-1 < log2(N+1) < k,所以 k-2 < h < k,所以 h = k-1。设此时对应的满二叉树节点数为N0,所以 k-1 = 对log2N0向下取整,

h = k-1 也等于对log2N0向下取整。因为 N > 2k-1 -1,即 N >= 2k-1,N0 <= 2k -1,所以对log2N0向下取整等于对 log2N 向下取整。所以二叉树的高度等于对 log2N 向下取整。


证毕。

转载于:https://www.cnblogs.com/buzzerrookie/p/3378473.html

完全二叉树的高度为什么是对lgN向下取整相关推荐

  1. 关于取整符号(二叉树具有n个结点的m次树的最小高度⌈logₘ(n(m-1)+1)⌉)

    性质4 具有n个结点的m次树的最小高度为 关于取整符号:向上取整⌈⌉和向下取整⌊⌋符号 向下取整的运算称为Floor,用数学符号 ⌊ ⌋ 表示:向上取整的运算称为Ceiling,用数学符号 ⌈ ⌉ 表 ...

  2. 一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?...

    package com.db2;/*** 一个球从100米高度自由落下,每次落地后反弹回原高度的一半: * 再落下,求在第几次之后反弹高度小于0.1米,* 并计算在这一次落地时共经过多少米?* * @ ...

  3. ACMNO.14一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米

    题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下.它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 ...

  4. /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第十次落地时,共经过多少米?第十次反弹多高? */

    题目: /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第十次落地时,共经过多少米?第十次反弹多高? */ 我是用java做的 public ...

  5. 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数...

    问题 1019: [编程入门]自由下落的距离计算 时间限制: 1Sec 内存限制: 128MB 提交: 7252 解决: 4190 题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下 ...

  6. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 * 第10次落地时,共经过多少米?第10次反弹多高?

    package Day03;/*** 第三题:* 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在* 第10次落地时,共经过多少米?第10次反弹多高?* <p> ...

  7. 萌新的Python练习菜鸟100例(十八)一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

    题目: 一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 分析: · 用户输入层数和数字: · 使用for i in range ...

  8. 一球从h米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时共经过多少米?反弹多高?

    /*-------------------------------------------------------------------------- [程序设计] ---------------- ...

  9. Java题-一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

    题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 第一种: public class Dome10 {public st ...

  10. 一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第十次反弹多高

    一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹.求它在第10次落地时共经过多少米,第十次反弹多高 #include <stdio.h> #include < ...

最新文章

  1. excel python开发_Excel + Python = 威力无比
  2. MonkeyRunner的使用二
  3. 程序员职场的出路在哪里
  4. go 获取内核个数_图解Go运行时调度器
  5. Educational Codeforces Round 112 (Rated for Div. 2)(A-D)
  6. Pod在多可用区worker节点上的高可用部署 1
  7. 折线分割平面(HDU-2050)
  8. uiautomatorviewer 查看元素新思路
  9. JavaSE学习总结(八)—— 异常处理(Exception)
  10. ERP软件管理持续升级 抢占产业先机
  11. 【Mybatis系列】从源码角度理解Mybatis字段映射-驼峰式命名
  12. 用spss进行数据的标准化处理_spss 如何进行数据标准化_spss原始数据标准化_spss数据标准化处理 如何使用SPSS做时间序列分析_spss时间序列分析...
  13. DUXCMS 2.x学习问题(一)
  14. 微信公众号过程中都有哪些技巧,提升公众号活跃度
  15. (Java实习生)每日10道面试题打卡——JavaWeb篇
  16. 网络对抗 Exp9 Web安全基础 20154311 王卓然
  17. python利用有道翻译做一个实时翻译软件
  18. 【第1天】移动App-学习笔记
  19. mysql 8.0 导入文件_MySQL8.0实验-从本地文件导入数据
  20. 【Gym 102893 L】The Firm Knapsack Problem (贪心)

热门文章

  1. 读《MySQL是怎样运行的》笔记记录
  2. android 闹钟设置铃声,安卓手机闹钟设置音乐铃声的方法
  3. 学位论文写作规范之论文选题、开题报告、毕业论文
  4. 管理好项目——带好技术团队的秘籍
  5. ReactNative进阶(五十三):Keystore file ‘..android.keystore‘ not found for signing config ‘debug‘问题解决
  6. Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
  7. 爱奇艺落子IP源头 全产业链开放协同助攻原创内容
  8. 2021年系统架构设计师考试上午真题与答案
  9. 美团成都一面面经及详细答案
  10. HTML 邮件兼容问题与解决方案