【折半查找二叉判定树】

二叉判定树,具有以下性质:

  1. 若左子树不为空,则左子树上各个节点的值 均小于 其根节点的值
  2. 若右子树不为空,则右子树上各个节点的值 均大于或等于 其根节点的值
  3. 左、右子树也分别具有上面两个特点


已知一个顺序存储是有序表为(15,26,34,39,45,56,58,63,74,76),试画出对应的二叉判定树,求其平均查找长度。


折半查找二叉判定树画法

【1】确定二叉判定树的深度(即:多少层)

  1. 序列总长度n = 10,而一棵深度为 h 的二叉树,节点数最多为(2^h) - 1

  2. n > (2^3) - 1,所以该二叉判定树有4层,前面3层为满二叉树结构,剩余3个节点在第4层。
    cd

【2】确定二叉判定树的根节点

  1. 根节点下标:rootIndex = (startIndex + endIndex) / 2,在前面序列中有10个元素,所以startIndex = 0,endIndex = 9

  2. (0 + 9) / 2 = 4,所以根节点下标为4,根节点的值为45
    cd

【3】确认根节点左右子树

  1. 45左侧元素 作为根节点的左子树

  2. 45右侧元素 作为根节点的右子树
    cd

【4】确定左子树部分的排序

  1. 45左侧元素,也就是15,26,34,39作为根节点的左子树部分

  2. 继续【2】中的父节点判断方式,(0 + 3) / 2 = 1,所以26是45的左孩子。15作为26的左孩子,34作为26的右孩子。剩下的39作为34的右孩子(注:为什么不是作为34的左孩子呢? 因为二叉判定树的左孩子<父节点,右孩子>父节点,而39>34,所以39作为34的右孩子,而不是左孩子)
    cd

【5】确定右子树部分的排序

  1. 45右侧元素,也就是56,58,63,74,76作为根节点的右子树部分

  2. 右子树的排序方式 和 左子树是一样的,所以这里省略了…
    cd

【6】该二叉判定树的整体结构:

cd


二叉判定树平均查找长度

cd




https://zhidao.baidu.com/question/273190366.html

  • 32
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 很抱歉,作为AI语言模型,我无法画图。但我可以为您解释一下折半查找判定树。 对于长度为10的有序表进行折半查找判定树如下: 根节点为表的中间元素,即第5个元素。如果查找的元素等于根节点,则查找成功;如果查找的元素小于根节点,则在左子树中继续查找;如果查找的元素大于根节点,则在右子树中继续查找。 左子树的根节点为表的中间元素,即第2个元素。如果查找的元素等于左子树的根节点,则查找成功;如果查找的元素小于左子树的根节点,则在左子树的左子树中继续查找;如果查找的元素大于左子树的根节点,则在左子树的右子树中继续查找。 右子树的根节点为表的中间元素,即第8个元素。如果查找的元素等于右子树的根节点,则查找成功;如果查找的元素小于右子树的根节点,则在右子树的左子树中继续查找;如果查找的元素大于右子树的根节点,则在右子树的右子树中继续查找。 以此类推,直到找到目标元素或者确定目标元素不存在为止。 ### 回答2: 折半查找也称二分查找,在一个有序表中查找目标元素的过程中,每次将表分成两个部分,分别判断目标元素在哪一部分中,并继续对该部分进行二分查找,直到找到目标元素或确定目标元素不存在为止。以下是长度为10的有序表进行折半查找判定树: 首先,将有序表分为两部分: 5 / \ 1 2 3 4 6 7 8 9 10 目标元素为8,判断8大于中位数5,因此目标元素在右侧部分。进一步分解右侧部分: 8 / \ 6 7 9 10 目标元素为8,判断8等于中位数8,找到目标元素。 根据上述描述,可以得到对长度为10的有序表进行折半查找判定树。 ### 回答3: 折半查找,又称二分查找,是一种用于在有序表中查找指定元素的算法。它的思想是每次将查找范围缩小一半,直到找到目标元素或者确定目标元素不存在。 对于长度为10的有序表进行折半查找判定树如下: 根节点:索引为5的元素 第一层:左子节点为索引为2的元素,右子节点为索引为8的元素 第二层:左子节点为索引为1的元素,右子节点为索引为4的元素;左子节点为索引为6的元素,右子节点为索引为9的元素 第三层:左子节点为索引为0的元素,右子节点为索引为3的元素;左子节点为索引为7的元素,右子节点为索引为非法值的元素 在这个判定树中,每个节点代表了一个比较操作,用来判断目标元素是在该节点值的左侧还是右侧。根据判定树折半查找的过程如下: 1. 首先比较目标元素与索引为5的元素的大小。如果相等,则找到目标元素,算法结束;如果目标元素小于索引为5的元素,则进入左子节点;如果目标元素大于索引为5的元素,则进入右子节点; 2. 在左子节点中,比较目标元素与索引为2的元素的大小。以此类推,最终找到目标元素或者确定目标元素不存在。 总体而言,折半查找判定树可以帮助我们直观地理解折半查找算法的执行过程。根据判定树,我们可以快速定位目标元素的位置,提高查找效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家师曹先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值