关于判定树的查找不成功的ASL分析!

NotFear 2019-01-10 11:19:07
有这样一个题目:
如图所示二叉排序树的查找不成功的平均查找长度是( )。
A.21/7 B.28/7 C.15/6 D.21/6


这里我就一并将其查找不成功的示意图弄出来看。
word给的答案是A,计算过程是:其平均查找长度为(2×2+3×3+4×2)/7=21/7。
但是我在网络上搜索到的答案是B,计算过程是:(4*3+5*2+3*2)=28/7。
我认为网络上是对的。但是书本上说了这样一句话:折半查找时查找失败的的过程就是走了一条从根节点到外部节点的路径,和给定值进行比较的关键字的个数等于其该路径上内部节点的个数。那么,这句话我觉得就证明了word文档上给出的答案是正确的。此外,书本上还有一句话:折半查找在查找不成功时和给定值进行比较的关键字个数最多也不超过log2N(向下取整)+1。而且我在网路上搜索的这个结论也都是一样的。
但是我在看计算机考研视频的时候,老师讲解方法就是网络上的B选项的方法。
所以,大家能不能给一个准确答案,告诉我这两种说法的区别(或者说谁对谁错)
...全文
2839 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
is Juncheng 2020-08-27
  • 打赏
  • 举报
回复 1
按照算法来说,最后一次应该不算,因为最后一次low已经大于high了,不进入循环
NotFear 2020-06-19
  • 打赏
  • 举报
回复
引用 2 楼 self2211 的回复:
最后不存在的结点也算一次比较。 比如查找到上图的1时。我们一眼能看出来1没有孩子结点,程序并不知道1有没有孩子结点 ,所以要再取null,判断一次,这一次应该算进去。 还可以换种方式理解。考虑极端情况,空树,即使没有一个结点,也要比较一次。
我觉得问题应该是在看题目怎么去问的:“查找成功的平均查找长度”还是“查找失败的平均查找长度”
enbug 2020-05-22
  • 打赏
  • 举报
回复
最后不存在的结点也算一次比较。 比如查找到上图的1时。我们一眼能看出来1没有孩子结点,程序并不知道1有没有孩子结点 ,所以要再取null,判断一次,这一次应该算进去。 还可以换种方式理解。考虑极端情况,空树,即使没有一个结点,也要比较一次。
NotFear 2019-01-10
  • 打赏
  • 举报
回复 1
大佬们,在线等你们回答捏

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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