社区
C语言
帖子详情
一道数据结构题目
Wesson96
2018-12-13 10:30:50
1)写出对一棵查找树(内部和外部节点的查找概率均已知)进行成功查找和不成功查找所需的平均比较次数,并对这2个比较次数作简要的解释。
2)写出在等概率情况下,最佳查找树的代价。
...全文
122
2
打赏
收藏
一道数据结构题目
1)写出对一棵查找树(内部和外部节点的查找概率均已知)进行成功查找和不成功查找所需的平均比较次数,并对这2个比较次数作简要的解释。 2)写出在等概率情况下,最佳查找树的代价。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Wesson96
2018-12-13
打赏
举报
回复
整理一下,不知道分析正不正确,忘高手和大神指教:
1)设D(i)为第i个节点的比较次数,等于 大于等于其深度的最小整数;对于具有N个节点的树:
C(成功查找)= [D(1) + ... + D(N) ] / N;
而不成功查找的节点最后一次比较必然在树的叶子节点上,可以认为与每个叶子节点比较的概率相等,故不成功查找的平均比较次数为 大于等于平均高度的最小整数;
2)对于完全二叉查找树,深度为d的层的节点数为 Nd = 2^d,则深度为k的完全二叉查找树的总节点数为:N = 2^(k+1) - 1, 设每个节点的被查找的次数相等,
a.则成功查找的平均比较次数为:
Avg(成功查找)= (1 * 2^0 + 2*2^1 + 3*2^2+...+(k+1)*2^k)/ N;
又因为 S(n) = 1 + 2*2 + 3*2^2 +...+(n+1)*2^n=n*2^(n+1) + 1,(k=0,1,2,...,n);
故
Avg(成功查找)= [k*2^(k+1) + 1] / [2^(k+1) - 1] = k + (k + 1) / [2^(k+1) - 1];
k <= Avg <= k + 1, k = log (N + 1) - 1, --> log(N+1) -1 <= avg <= log(N + 1),即平均查找次数为 大于等于logN的最小整数;
b.若不成功查找,每次比较的次数都等于其 (树高 + 1 = 大于等于logN的最小整数);
Wesson96
2018-12-13
打赏
举报
回复
对于完全二叉查找树,深度为d的层的节点数为 Nd = 2^d,则深度为k的完全二叉查找树的总节点数为:N = 2^(k+1) - 1, 设每个节点的被查找的次数相等,
1)则成功查找的平均比较次数为:
Avg(成功查找)= (1 * 2^0 + 2*2^1 + 3*2^2+...+(k+1)*2^k)/ N;
又因为 S(n) = 1 + 2*2 + 3*2^2 +...+(n+1)*2^n=n*2^(n+1) + 1,(k=0,1,2,...,n);
故
Avg(成功查找)= [k*2^(k+1) + 1] / [2^(k+1) - 1] = k + (k + 1) / [2^(k+1) - 1];
k <= Avg <= k + 1, k = log (N + 1) - 1, --> log(N+1) -1 <= avg <= log(N + 1),即平均查找次数为 大于等于logN的最小整数;
2)若不成功查找,每次比较的次数都等于其 (树高 + 1 = 大于等于logN的最小整数);
哈工大 OJ 解题报告
题目
通常涵盖算法设计、
数据结构
、数学、逻辑推理等多个方面。哈工大的OJ平台提供了丰富的
题目
,帮助参赛者进行实战演练。 解题报告通常包括以下几个部分: 1.
题目
分析:对每
一道
题目
进行详细解读,包括理解题意...
CF竟然绿掉了...这学期的目标是DIV1
C题没出来。。。。昨天CF竟然绿了。。竟然绿了。。。好吧,今年的目标就是紫色,我要进DIV...另外这也算是
一道
数据结构
题目
。当然也是比较水了。 拿着一本刚刚看完的ACM的书,我在想,在ACM上,我还能再学到什么?若不
一道
值得思考的
数据结构
题目
(入栈与出栈序列)
就业指导课上做的
一道
数据结构
中有关栈的
题目
,当时一开始自己思考不全面,错选了。一个栈的入栈序列为1,2,3,…,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,则 p 3 可能取值的个数是()A:n -3B:n - 2C...
十万字全网最全
数据结构
代码
本文代码实现基本按照《
数据结构
》课本目录顺序,外加大量的复杂算法实现,一篇文章足够。能换你一个收藏了吧?
数据结构
与算法面试题80道
1.把二元查找树转变成排序的双向链表
题目
: ...首先我们定义的二元查找树 节点的
数据结构
如下: struct BSTreeNode{int m_nValue; // value of nodeBSTreeNode *m_pLeft; // left child of nodeBSTreeNo
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章