首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
证明:对于任一包含n个元素的堆中,至多有个高度为h的节点?
[问答题]
证明:对于任一包含n个元素的堆中,至多有
个高度为h的节点?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(0)
分享
纠错
1个回答
添加回答
0
神弑
堆这种数据结构的性质使得其必然是完全二叉树,但可不一定是满完全二叉树,为了方便分析,假定它是满完全二叉树(即完美二叉树):
所以这时它也就有完美二叉树的性质:
1、n=n
0
+n
1
+n
2
2、2n
2
=n-1
(n
2
是含有两个孩子的节点数目,n是一棵树所有的节点数目。
想象一下二叉树每个含有两个孩子的节点都会引入两个节点数,每个含有一个孩子的节点都会引入一个节点数,所以有n
1
+2n
2
=n-1,n-1是因为根节点只表明了它有两个孩子节点,并没有表明它自己这个节点,因为完美二叉树没有一个孩子的节点,所以n
1
不存在。故有以上2n
2
=n-1)
联立两式,得出h=0(由树底~根节点:0~log
2
n)时的结点数为:
n
0
=(n+1)/2^1
h=1时的结点数为:
n
0
=(n-(n+1)/2)/2=(n-1)/2^2=(n-1)/4<n/4
h=2时的结点数为:
n
0
=(n-(n+1)/2-(n-1)/4)/2=(n-1)/2^3<(n-1)/8<n/8
同理可证:n
0
<n/2^(h+1),即至多有n/2^(h+1)个高度为h的结点。
发表于 2022-01-08 10:54:51
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
上传者:
小小
难度:
1条回答
0收藏
1614浏览
热门推荐
相关试题
小红的树上游戏
树
博弈
评论
(1)
下列哪些运算不会排序()
SQL
评论
(1)
小O的叶子
树
图
OPPO
评论
(1)
下面关于 C++ 中构造函数和析构...
C++
评论
(1)
下列哪个不是Verilog数据类型()。
Verilog
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题