25版王道数据结构课后习题详细分析 第七章 7.3树形查找

一、单项选择题

————————————————————

————————————————————

解析:二叉排序树插入新结点时不会引起树的分裂组合。对二叉排序树进行中序遍历可得到有序序列。当插入的关键字有序时,二叉排序树会形成一个长链,此时深度最大。在此种情况下进行查找,有可能需要比较每个结点的关键字,超过总结点数的1/2。


正确答案:

————————————————————

————————————————————

解析:由二叉排序树的定义不难得出中序遍历二叉树得到的序列是一个有序序列。


正确答案:

————————————————————

————————————————————

解析:二叉排序树的查找路径是自顶向下的,其平均查找长度主要取决于树的高度。


正确答案:

————————————————————

————————————————————

解析:在二叉排序树的存储结构中,每个结点由三部分构成,其中左(或右)指针指向比该结点的关键字值小(或大)的结点。关键字值最大的结点位于二叉排序树的最右位置,因此它的右指针一定为空(有可能不是叶结点)。还可用反证法,若右指针不为空,则右指针上的关键字肯定比:原关键字大,所以原关键字结点一定不是值最大的,与条件矛盾,所以右指针一定为空。


正确答案:

————————————————————

————————————————————

解析:在二叉排序树上查找时,先与根结点值进行比较,若相同,则查找结束,否则根据比较结果,沿着左子树或右子树向下继续查找。根据二叉排序树的定义,有左子树结点值≤根结点值≤右子树结点值。C序列中,比较911关键字后,应转向其左子树比较240,左子树中不应出现比911更大的数值,但240竟有一个右孩子结点值为912,所以不可能是正确的序列。


正确答案:

————————————————————

————————————————————

解析:按照二叉排序树的构造方法,不难得到A, B,D序列的构造结果相同。


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:当输入序列是一个有序序列时,构造的二叉排序树是一个单支树,当查找一个不存在的关键字值或最后一个结点的关键字值时,需要n次比较。
 


正确答案:

————————————————————

————————————————————

解析:五个不同结点构造的二叉查找树,中序序列是确定的。先序序列的个数为n=5的卡特兰数,加上中序序列和先序序列能唯一确定一棵二叉树,因此二叉排序树的形态共有Catalan(5)=42种。


正确答案:

————————————————————

————————————————————

解析:当二叉排序树的叶结点全部都在相邻的两层内时,深度最小。理想情况是从第一层到倒数第二层为满二叉树。类比完全二叉树,可得深度为[log2(n + 1)]。


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:插入和删除结点都有可能引起LR平衡旋转或者RL平衡旋转,发生两次旋转操作。


正确答案:

————————————————————

————————————————————

解析:当按关键字有序的顺序插入初始为空的平衡二叉树时,若关键字个数n=2*-1时,则该平衡二叉树一定是一棵满二叉树(可以用1~3、1~7手工验证)。当插入关键字1023时,平衡二叉树正好是一棵满二叉树,高度是9。因此,插入关键字1024后,平衡二叉树的高度是10。


正确答案:

————————————————————

————————————————————

解析:Ⅰ和Ⅱ都是红黑树的性质。AVL是高度平衡的二叉查找树,红黑树是适度平衡的二叉查找树,从这一点也可以看出AVL的查询效率往往更优,Ⅲ错误。AVL的某结点的左右孩子的平衡因子都是零,并不能说明左右子树的高度相等,因此该结点的平衡因子不一定为零,IⅣ错误。


正确答案:

————————————————————

————————————————————

解析:自平衡的二叉排序树是指在插入和删除时能自动调整以保持其所定义的平衡性,两者都属于自平衡二叉树,A正确。两者的查找、插入、删除操作的时间复杂度都为O(logr),B正确。在红黑树中删除结点时,情况1可能变为情况2、3或4,情况⒉会变为情况3,可能会出现旋转次数超过2次的情况,C错误。从任一结点到每个叶结点的所有路径都包含相同数目的黑结点,没有两个连续的红结点,且叶结点是红色的,这意味着在任一结点到其左右子树中最远和最近的叶结点之间,红结点的数目小于或等于黑结点的数目,路径长度之比不超过2,D正确。


正确答案:

————————————————————

————————————————————

解析:红黑树的红结点数目最大可以是黑结点数目的2倍(如一棵有3个结点的红黑树,第1层为黑色,第2层为红色),A错误。从根结点出发到所有叶结点的黑结点数是相同的,若所有结点都是黑色,则一定是满二叉树,B正确。考虑某个黑结点,它可以有一个空叶结点孩子和一个非空红结点孩子,C错误。红黑树中可能存在红结点,根结点为红色的子树不是红黑树,D错误。


正确答案:

————————————————————

————————————————————

解析:红黑树是一种特殊的二叉排序树,B项不满足二叉排序树的性质。C项中,结点2的左右黑结点数不同。D项中,结点3的左右黑结点数不同。只有A项满足红黑树的定义。


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:根据平衡二叉树的定义,任意结点的左、右子树高度差的绝对值不超过1。而其余3个答案均可以找到不满足条件的结点。答题时可以把每个非叶结点的平衡因子都写出来。


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:由于在二叉排序树中插入结点的位置是一个新的叶结点,若删除的是叶结点,则重新插入后得到的二叉排序树与原来的二叉排序树相同。若删除的是非叶结点,在删除过程中会找其他结点填补,重新插入后变成叶结点,则得到的二叉排序树与原来的二叉排序树不同。


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:大多数教材将平衡二叉树定义为一种高度平衡的二叉排序树,二叉排序树的中序序列是一个升序序列,而题意正好相反。由此可知,命题老师认为平衡二叉树仅为一棵满足高度平衡的二叉树,不一定是二叉排序树。只有两个结点的平衡二叉树的根结点的度为1,A错误。中序遍历后得到一个降序序列(与二叉排序树正好相反),树中最大元素一定无左子树(可能有右子树),这与二叉排序树也正好相反,也因此不一定是叶结点,B错误,D正确。最后插入的结点可能会导致平衡调整,而不一定是叶结点,C错误。


正确答案:

————————————————————

————————————————————

解析:根据二叉排序树的特性:中序遍历(LNR)得到的是一个递增序列。图中二叉排序树的中序遍历序列为,3, Xs,x4,,可知x<xs<X4。


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

————————————————————

————————————————————

解析:


正确答案:

二、综合应用题

————————————————————

————————————————————

解答:先序序列为(50,38,30,45,40,48,70,60,75,80),二叉树的中序序列是一个有序序列,所以为(30,38,40,45,48,50,60,70,75,80),由先序序列和中序序列可以构造出对应的二叉树,如下图所示。

查找成功的平均查找长度为
ASL=(1×1+2×2+3×4+4×3)/10=2.9
图中的方块结点为虚构的查找失败结点,其查找路径为从根结点到其父结点(圆形结点)的结点序列,所以对应的查找失败平均长度为
ASL=(3×5+4×6)/11 =39/11
 

————————————————————

————————————————————

解答:

————————————————————

————————————————————

解答:

————————————————————

————————————————————

解答:

  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
王道数据结构课后习题中,有一个关于排序的题目。根据引用的思路,我们可以使用排序后查找的方法来解决这个问题。具体步骤如下: 1. 首先,对给定的数据进行排序,可以使用快速排序、归并排序等常见的排序算法进行排序。排序的时间复杂度为O(log2n)。 2. 排序完成后,我们可以使用二分查找的方法来查找特定元素。如果目标元素存在于排序后的数组中,可以通过遍历判断其是否存在。时间复杂度为O(log2n)。 所以,根据引用的思路,我们可以使用排序后查找的方法来解决王道数据结构课后习题中排序的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [leetcode答案-kaoyan-data-structure:21考研,用的去年的书《2020王道数据结构》](https://download.csdn.net/download/weixin_38733733/19920375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [王道数据结构课后题编程(顺序表)](https://blog.csdn.net/RHJlife/article/details/90450834)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值