一道数据结构题目

Wesson96 2018-12-13 10:30:50
1)写出对一棵查找树(内部和外部节点的查找概率均已知)进行成功查找和不成功查找所需的平均比较次数,并对这2个比较次数作简要的解释。
2)写出在等概率情况下,最佳查找树的代价。
...全文
122 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的最小整数);

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧