引入一个例题来说明折半查找二叉树与平衡二叉树的区别:

已知一个长度为16的顺序表,其元素按关键字有序排列,若采用折半查找算法查找一个不存在的元素,则比较的次数至少和至多的情况分别是:

首先,需要知道如何构建一棵折半查找二叉树,因为折半查找要求元素需以有序的顺序表形式进行存储,假设这16个数就是1~16构成的有序序列,构造的折半查找二叉树如下:

右图为将其所有的失败情况进行补充,我们发现,折半查找二叉树是一棵平衡的二叉排序树,要查找一个元素,其查找长度(即关键字对比次数)不会超过树的高度,而对于一棵具有平衡二叉树性质的二叉树,其树高h=log2(n+1)向上取整,因此,折半查找的时间复杂度不会超过O(log2n)

如果是二叉排序树,该案例的情况是一棵单枝树,此时查找失败的查找长度为O(n),n为数高,同时也为节点的个数,这是由于,二叉排序树的建树取决于初始节点是否有序,有序的情况下会形成单枝树,此时查找的性能最差,同时,二叉排序树最好的时间性能同折半查找二叉树,为O(log2n)

回到本题,对于折半查找失败的情况就一目了然了,最好的对比次数为4,最多的对比次数为5,才可以判定查找失败

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。