【转载】完全二叉树的高度为什么是对lgN向下取整
转载自:https://www.cnblogs.com/buzzerrookie/p/3378473.html
完全二叉树的高度为什么是对lgN向下取整呢?
说明一下这里的高度:只有根节点的树高度是0。
设一棵完全二叉树节点个数为N,高度为h。所以总节点个数N满足以下不等式:
1 + 21 + 22 +……+ 2h-1 < N <= 1 + 21 + 22 +……+ 2h 即 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向下取整相关推荐
- js的向下取整_【转载】Javascript使用Math.floor方法向下取整
在Javascript的数值运算中,很多时候需要对最后计算结果向下取整,Math.floor是javascript中对计算结果向下取整的函数,它总是将数值向下舍入为最接近的整数.此外Math.ceil ...
- 转载--数据库sql取整操作
转自:http://blog.csdn.net/outget1/article/details/4821975 用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字 ...
- 关于取整符号(二叉树具有n个结点的m次树的最小高度⌈logₘ(n(m-1)+1)⌉)
性质4 具有n个结点的m次树的最小高度为 关于取整符号:向上取整⌈⌉和向下取整⌊⌋符号 向下取整的运算称为Floor,用数学符号 ⌊ ⌋ 表示:向上取整的运算称为Ceiling,用数学符号 ⌈ ⌉ 表 ...
- 一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?...
package com.db2;/*** 一个球从100米高度自由落下,每次落地后反弹回原高度的一半: * 再落下,求在第几次之后反弹高度小于0.1米,* 并计算在这一次落地时共经过多少米?* * @ ...
- 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数...
问题 1019: [编程入门]自由下落的距离计算 时间限制: 1Sec 内存限制: 128MB 提交: 7252 解决: 4190 题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下 ...
- ACMNO.14一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米
题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下.它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 ...
- /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第十次落地时,共经过多少米?第十次反弹多高? */
题目: /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第十次落地时,共经过多少米?第十次反弹多高? */ 我是用java做的 public ...
- 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 * 第10次落地时,共经过多少米?第10次反弹多高?
package Day03;/*** 第三题:* 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在* 第10次落地时,共经过多少米?第10次反弹多高?* <p> ...
- 萌新的Python练习菜鸟100例(十八)一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
题目: 一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 分析: · 用户输入层数和数字: · 使用for i in range ...
- 一球从h米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时共经过多少米?反弹多高?
/*-------------------------------------------------------------------------- [程序设计] ---------------- ...
最新文章
- idea创建java项目目录结构_用IDEA创建一个简单的Maven的JavaWeb项目
- 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
- C/C++数组名与指针区别
- 《Java基础学习笔记》JAVA基础
- delphi ehlib 添加选择框_教你用CASS10.1,在宗地图中添加“亩”注记
- ubuntu中查看IP地址命令
- Java 金额转换帮助类(元转分)
- c语言加减乘除怎么随机输入,注会机考加减乘除如何输入,注会机考加减乘除如何输入...
- 牙齿变色怎么办?如何清洁牙齿?
- python微信转账记录_python 处理微信对账单数据的实例代码
- C语言——计算单词个数
- Arduino的控制(一):Arduino步进电机六轴机械手(油管搬)
- 正在参加2021年「博客之星」评选,求投票
- dea_des 简介
- 赵铁安烧饼机器人_河南农民发明烧饼机器人历时六年花费达60万元,有人出20万想买...
- unity 纹理压缩 内存优化
- 大数模板——来自jxy师兄
- 100天精通Python(基础篇)——第7天:高级变量类型复习
- python数据科学常国珍_《PYTHON数据科学:全栈技术详解》常国珍//赵仁乾//张秋剑著【摘要 书评 在线阅读】-苏宁易购图书...
- 商业模式不是赚钱模式