【分析】:首先折半查找(二分查找)判断树是执行折半查找过程中形成的树,那么通过重现折半查找的过程,则可以形成对应的树形结构。
A选项:
A选项一共有10个结点,假设10个结点序号为0-9.那么折半查找的过程如下:
- 取0-9的中间点位,作为根结点,(0+9)/2 = 4.5, 那么这里涉及到一个向上取整或者向下取整的问题。观察到A选择的左子树有5个结点,右子树有四个结点,那么可以判断这里的根节点序号取的是5,那么取整的规则是向上取整,后续都需要遵守向上取整的规则。
2-1. 依据上面的规则,对左子树0-4做折分查找。那么0-4的中间结点为2,那么将左子树分为左【0,1】,中【2】,右【3,4】
2-2 【0,1】取出对比的结点为1(向上取整),所以1是2的左子结点,0又是1的左子节点,符合如图所示
2-3 【3,4】取出对比的结点为4(向上取整),所以4是2的游子节点,3是4的左子节点,符合如图所示
3-1 依据上面的规则,对右子树6-9做折分查找。那么6-9的中间结点为8(向上取整),那么将左子树分为左【6,7】,中【8】,右【9】
3-2 【6,7】取出对比的结点为7(向上取整),所以7是8的左子结点,6又是7的左子节点,符合如图所示
3-3【9】取出对比的结点为9,所以9是8的右子结点,,符合如图所示。
综上所述A符合条件
B选项:
B选项一共有11个结点,假设11个结点序号为0-10.那么折半查找的过程如下: - 取0-10的中间点位,作为根结点,(0+10)/2 = 5 可以判断这里的根节点序号取的是5.
2-1. 依据上面的规则,对左子树0-4做折分查找。那么0-4的中间结点为2,那么将左子树分为左【0,1】,中【2】,右【3,4】
2-2 【0,1】取出对比的结点为0或1,从树形结构可以判断出取的是1,如若是0则1应该是0的右子节点,如图不符,所以此处对比的结点是1,那么(0+1)/2=0.5,取整规则为向上取整。
2-3 【3,4】取出对比的结点为4(向上取整),所以4是2的游子节点,3是4的左子节点,符合如图所示
3-1 依据上面的规则,对右子树6-10做折分查找。那么6-10的中间结点为8(向上取整),那么将左子树分为左【6,7】,中【8】,右【9,10】
3-2 【6,7】取出对比的结点为7(向上取整),所以7是8的左子结点,6又是7的左子节点,与图不符
所以B不符合条件。
C选项:
C选项一共有9个结点,假设9个结点序号为0-8.那么折半查找的过程如下: - 取0-8的中间点位,作为根结点,(0+8)/2 = 4, 那么可以判断这里的根节点序号取的是4.
2-1. 依据上面的规则,对左子树0-3做折分查找。那么0-3的中间结点为(0+3)/3=1.5,如图此处判断完后,左子树有1个结点,右子树有两个结点,那么可以判断出此处取的判断结点为1,那么取整规则为向下取整。那么将左子树分为左【0】,中【1】,右【2,3】
2-2 0是1的左子节点,符合如图所示
2-3 【2,3】取出对比的结点为2(向下取整),所以2是1的右子节点,3是2的右子节点,与图不符
所以C不符合条件。
D选项:
A选项一共有10个结点,假设10个结点序号为0-9.那么折半查找的过程如下: - 取0-9的中间点位,作为根结点,(0+9)/2 = 4.5, 那么这里涉及到一个向上取整或者向下取整的问题。观察到A选择的左子树有4个结点,右子树有5个结点,那么可以判断这里的根节点序号取的是4,那么取整的规则是向下取整,后续都需要遵守向下取整的规则。
2-1. 依据上面的规则,对左子树0-3做折分查找。那么0-3的中间结点为1(向下取整),那么将左子树分为左【0】,中【1】,右【2,3】 与图不符
所以D不符合条件。