算法导论 6.3-3解答
来源:互联网 发布:数据库的三种数据模型 编辑:程序博客网 时间:2024/06/06 05:37
证明:在任一含n个元素的堆中,至多有ceiling(n/(2^(h+1)))个高度为h的节点。
分析:刚开始分析这道题,犯了结点高度h的错误。
具体问题如下:
对于满二叉树,上述命题成立。但如果是非完全二叉树,命题不成立。举例说明:假设有10个元素,那么高度为1的节点也就是第3层的节点,一共有4个,而不是ceiling(10/2^2))=3个,为什么呢?经过思考以后,对于结点高度的定义,是按照当前所在结点为根结点的子树决定的,而不是由整棵树决定,也就是所有的叶子结点,它的高度全部为0。还是假设有10个元素,它的高度如下图所示:命题理解正确了,开始用数学归纳法证明吧!证明:
(1)对于h=0, 即叶子结点的个数,由6.1-7习题可知,叶子结点的个数最多为ceiling(n/2)=ceiling(n/2^(h+1)),即初始化成立。
(2)假设h=x成立,即高度为x的结点最多有ceiling(n/2^(x+1)),
那么对于高度为h=x+1的结点应该为高度为x的父结点,所以高度为x+1的结点个数最多为ceiling(n/2^(x+1))/2=ceiling(n/2^(x+2))=ceiling(n/2^(h+1)).
命题得证。
转载自:http://blog.csdn.net/lqh604/article/details/7381893
解法2:(不知是否正确)
该完全二叉树高log2(n+1)则高为h的节点的层号为log2(n+1) - h由于二叉树第i层最多有2^(i - 1)个节点所以该层最多的节点数为2^(log2(n+1) - (h + 1))个,即:ceiling (n / 2 ^ (h + 1))
转自:http://bbs.sjtu.edu.cn/bbstcon?board=Algorithm&reid=1218003164
- 算法导论 6.3-3解答
- 算法导论 6.3-3解答
- 算法导论的11.3-3解答
- 算法导论 6.5-8解答
- 【通告】算法导论习题解答
- 《算法导论》习题解答 Chapter 22.1-3(转置图)
- 算法导论动态规划课后习题解答
- 算法导论习题15.5-1解答
- 算法导论习题32.1-4解答
- 算法导论第三版4.1习题解答
- 算法导论课后习题部分解答
- Introduction to Algorithms 算法导论 第3章 函数的增长 学习笔记及习题解答
- 算法导论(3版)第4章习题的部分解答
- 算法导论(3版)第5章少量习题的解答
- 算法导论 练习题 6.3-3
- 随机排列算法及《算法导论》5.3节习题解答
- 算法导论第二章部分习题自我解答
- 算法导论 第7章部分习题解答
- Eclipse使用大全
- 详细剖析 SurfaceView ! Callback以及SurfaceHolder!!
- SqlHelper 数据库操作工具
- QPluginLoader加载动态链接库
- 从细节入手,调整销售策略
- 算法导论 6.3-3解答
- 英文名字中的first name与last name
- HDOJ2059 龟兔赛跑 解题报告
- 面向对象基础-类和对象
- HTML CSS
- 栈的顺序存储结构——顺序栈 图解和代码实现
- 黑马程序员_java基础(1) JDK汇总&变量与运算
- JQuery中操作Css样式
- 09黑马程序员_方法,参数,返回值