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

完全二叉树的高度为什么是对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 向下取整。


证毕。

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

  1. js的向下取整_【转载】Javascript使用Math.floor方法向下取整

    在Javascript的数值运算中,很多时候需要对最后计算结果向下取整,Math.floor是javascript中对计算结果向下取整的函数,它总是将数值向下舍入为最接近的整数.此外Math.ceil ...

  2. 转载--数据库sql取整操作

    转自:http://blog.csdn.net/outget1/article/details/4821975 用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. idea创建java项目目录结构_用IDEA创建一个简单的Maven的JavaWeb项目
  2. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
  3. C/C++数组名与指针区别
  4. 《Java基础学习笔记》JAVA基础
  5. delphi ehlib 添加选择框_教你用CASS10.1,在宗地图中添加“亩”注记
  6. ubuntu中查看IP地址命令
  7. Java 金额转换帮助类(元转分)
  8. c语言加减乘除怎么随机输入,注会机考加减乘除如何输入,注会机考加减乘除如何输入...
  9. 牙齿变色怎么办?如何清洁牙齿?
  10. python微信转账记录_python 处理微信对账单数据的实例代码
  11. C语言——计算单词个数
  12. Arduino的控制(一):Arduino步进电机六轴机械手(油管搬)
  13. 正在参加2021年「博客之星」评选,求投票
  14. dea_des 简介
  15. 赵铁安烧饼机器人_河南农民发明烧饼机器人历时六年花费达60万元,有人出20万想买...
  16. unity 纹理压缩 内存优化
  17. 大数模板——来自jxy师兄
  18. 100天精通Python(基础篇)——第7天:高级变量类型复习
  19. python数据科学常国珍_《PYTHON数据科学:全栈技术详解》常国珍//赵仁乾//张秋剑著【摘要 书评 在线阅读】-苏宁易购图书...
  20. 商业模式不是赚钱模式

热门文章

  1. mysql 查询每个班级的前三名
  2. 生物化学复习题I·蛋白质
  3. 在html中加入中文字体,css设置中文字体
  4. 在Linux中禅道的安装流程
  5. ESP32播放MP3音乐-无需SD卡-WM8978-ESP32解码MP3
  6. 【加拿大签证】加拿大签证办理GCKey注册说明【加拿大签证网上办理注册】
  7. OpenLdap-如何使用phpLdapAdmin创建CN用户、OU用户组
  8. 判断一个数是不是质数(素数)
  9. [转]二阶巴特沃斯(Butterworth)滤波器
  10. OA系统概要设计文档