社区
C语言
帖子详情
一道数据结构题目
Wesson96
2018-12-13 10:30:50
1)写出对一棵查找树(内部和外部节点的查找概率均已知)进行成功查找和不成功查找所需的平均比较次数,并对这2个比较次数作简要的解释。
2)写出在等概率情况下,最佳查找树的代价。
...全文
126
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 解题报告
若干百个,没细数,前几个下下来的有良心的回复一下帮我数数。
CF竟然绿掉了...这学期的目标是DIV1
C题没出来。。。。昨天CF竟然绿了。。竟然绿了。。。好吧,今年的目标就是紫色,我要进DIV1!! 首先自己的DP贪心2分这样的
题目
得拿下,然后
数据结构
图论的
题目
,然后才是数学题。今年的目标就是这样了。 昨天的C题没做出来,首先就是因为这种需要变形构造的
题目
自己做的太少了。另外这也算是
一道
数据结构
题目
。当然也是比较水了。 拿着一本刚刚看完的ACM的书,我在想,在ACM上,我还能再学到什么?若不
一道
值得思考的
数据结构
题目
(入栈与出栈序列)
就业指导课上做的
一道
数据结构
中有关栈的
题目
,当时一开始自己思考不全面,错选了。一个栈的入栈序列为1,2,3,…,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,则 p 3 可能取值的个数是()A:n -3B:n - 2C:n - 1D:无法确定答案:C ( n - 1)个看了别人的一些解析,觉得不够完善,下面给出自己的见解。首先,栈的先进后出原则大家应该是知道的。
十万字全网最全
数据结构
代码
本文代码实现基本按照《
数据结构
》课本目录顺序,外加大量的复杂算法实现,一篇文章足够。能换你一个收藏了吧?
数据结构
与算法面试题80道
1.把二元查找树转变成排序的双向链表
题目
: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的
数据结构
如下: struct BSTreeNode{int m_nValue; // value of nodeBSTreeNode *m_pLeft; // left child of nodeBSTreeNo
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章