折半判定查找树 从pta上的题说起

大早晨一下子看到了这个题,看了一会感觉眼熟但是没啥思路 ,所以先写下来题解然后防止自己忘把~

在这里,我们不妨设折半查找是向下取整的,所以存在:

情况一:当剩余查找个数为偶数的时候,在树中表现为对应节点左边的子节点总数比右边子节点总数少一个例如,在结点1,2,3,4中查找 low=1,high=4 min=2(下取整)。因此,根节点为2, 左子树结点有1,右子树结点共有3,4 此时左子树结点总个数少于右节点。

情况二:当需要判断的节点还剩两个的时候,剩下的一个节点必须是用于比较的节点的右孩子。
例如说明:在结点1,2中查找,low=1 ,high=2,mid=1,因此,根节点为1,左子树为空,右子树为2

图D根节点的左边有4个节点,右边却有5个节点,与情况一矛盾,排除。

图B和图C的第二层节点中存在只有右孩子的节点,与情况二矛盾,排除。

总起来说就是向下取整的时候就是左边少右面多 然后再只剩两个节点的叶子处只有右孩子,向上取整就是正好相反,这个可以通过画图啥的来解释。

又愉快的水一篇~~~~~~·

猜你喜欢

转载自blog.csdn.net/qq_27151549/article/details/84915376