二叉树判断是否为折半查找树

在这里插入图片描述
【分析】:首先折半查找(二分查找)判断树是执行折半查找过程中形成的树,那么通过重现折半查找的过程,则可以形成对应的树形结构。
A选项:
A选项一共有10个结点,假设10个结点序号为0-9.那么折半查找的过程如下:

  1. 取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.那么折半查找的过程如下:
  2. 取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.那么折半查找的过程如下:
  3. 取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.那么折半查找的过程如下:
  4. 取0-9的中间点位,作为根结点,(0+9)/2 = 4.5, 那么这里涉及到一个向上取整或者向下取整的问题。观察到A选择的左子树有4个结点,右子树有5个结点,那么可以判断这里的根节点序号取的是4,那么取整的规则是向下取整,后续都需要遵守向下取整的规则。
    2-1. 依据上面的规则,对左子树0-3做折分查找。那么0-3的中间结点为1(向下取整),那么将左子树分为左【0】,中【1】,右【2,3】 与图不符
    所以D不符合条件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值