下列二叉树中,可能成为折半查找判定树的是

在这里插入图片描述
这道题考察的是折半查找时中间点的选择,当剩余序列为偶数个时,我们应该向上取整还是向下取整。例如对1,2,3,4四个数进行排序时,应该选2做中间点还是选3做中间点。实际上并没有要求,选哪个都能完成折半查找,只是在查找的全程你只能用一种方式。
如果向上取整,每个节点左子树的节点个数肯定大于等于右子树节点个数。反之若向下取整,每个节点右子树的节点个数大于等于左子树的节点个数。
b,c,d选项都自相矛盾,有的节点左子树的节点多,有的节点右子树的节点多。所以答案为a选项。

关于题目的思考:在做这题时我其实没有仔细看过折半查找的算法实现,只理解了折半查找的思想。所以在做题时没多想折半查找向上取整还是向下取整是否有一个定性的规定。事实上在算法实现中我们选择了用"/"——整除号来计算中间节点的序号,这样比较简单,而整除号是向下取整,会让我们产生折半查找选中间序列就应该是向下取整的思维定式。事实上算法应该服务于我们要实现的方法,我们不应该通过算法本身去理解一个方法。
出题人所给的正确选项正好是一个向上取整而产生的判定树,和书上通常出现的判定树都不同(出题人很会把握考生心理)。因为书上的判定树是基于我们所写的向下取整的算法而产生的。其实一开始我也没有过多去考虑这道题的答案,直到我自己动手去画一颗判定树却发现我画的判定树总是左边节点数大于等于右边节点数,和答案的判定树完全不一样时。我才开始思考是不是真的不能向上取整。其实之前是走入了一种思维定式。

  • 51
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值