25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.3 二叉树的遍历和线索二叉树 选择题部分

本文主要是介绍25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.3 二叉树的遍历和线索二叉树 选择题部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、单项选择题

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

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

解析:二叉树中序遍历的最后一个结点一定是从根开始沿右子女指针链走到底的结点,设用p指示。若结点p不是叶结点(其左子树非空),则前序遍历的最后一个结点在它的左子树中,A、B错误;若结点p是叶结点,则前序与中序遍历的最后一个结点就是它,C正确。若中序遍历的最后一个结点p不是叶结点,它还有一个左子女q,结点q是叶结点,那么结点q是前序遍历的最后一个结点,但不是中序遍历的最后一个结点,D错误。

正确答案:C

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

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

解析:三种遍历方式中,都先遍历左子树,再遍历右子树,因此b一定在c的前面访问。

正确答案:C

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

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

解析:

正确答案:C

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

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

解析:后序遍历的顺序是LRN,若n在N的左子树,m 在N的右子树,则在后序遍历的过程中n在m之前访问;若n是m的子孙,设m在N的位置,则n无论是在m的左子树还是在右子树,在后序遍历的过程中n都在m之前访问。其他都不可以。选项C要成立,就需加上两个结点位于同一层这个条件。

正确答案:D

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

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

解析:在后序遍历退回时访问根结点,就可以从下向上把从n到m的路径上的结点输出,若采用非递归的算法,则当后序遍历访问到n时,栈中把从根到n的父指针的路径上的结点都记忆下来,也可以找到从m到n的路径。

正确答案:C

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

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

解析:

正确答案:C

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

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

解析:左永远在右前面,三种遍历方式中,访问左、右子树的先后顺序是不变的,只是访问根结点的顺序不同,因此叶结点的先后顺序完全相同。可以采用特殊值法,画一个结点数为3的满二叉树,采用三种遍历方式来验证答案的正确性。

正确答案:B

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

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

解析:对每个顶点从1开始按序编号,要求结点编号大于其左、右孩子编号,并且左孩子编号小于右孩子编号。编号越大说明遍历顺序越靠后,因此,三者遍历顺序为先左子树、再右子树、后根结点。4个选项中仅后序遍历满足要求。

正确答案:C

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

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

解析:结点v的编号比其左子树上的最小编号还小,而v的右子树中的最小编号大于v的左子树中的最大编号,因此v的编号比其左、右子树上的所有编号都小,显然是按先序遍历次序。

正确答案:B

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

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

解析:

正确答案:D

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

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

解析:7个结点的完全二叉树是一棵3层的满二叉树,画出相应二叉树的树形,根据后序遍历序列填入相应的结点,得到相应的完全二叉树,求得其先序遍历序列为ABCDEFG。

正确答案:C

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

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

解析:二叉树的前序遍历为NLR,后序遍历为LRN。根据题意,在前序序列中X在Y之前,在后序序列中X在Y之后,若设X在根的位置,Y在其左子树或右子树中,即满足要求。

正确答案:C

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

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

正确答案:C

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

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

解析:因前序序列和中序序列可以确定一棵二叉树,所以可试着用题目中的序列构造出相应的二叉树,即可得知,只有选项B的序列可以构造出二叉树。

正确答案:B

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

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

解析:先序序列为NLR,后序序列为LRN,虽然可以唯一确定树的根结点,但无法划分左、右子树。例如,先序序列为AB,后序序列为BA。

正确答案:D

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

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

解析:中序遍历是“左根右”,后序遍历是“左右根”,当任一结点没有右子树时,两种遍历都是“左根”。显然,当二叉树为空树或只有根结点时,其中序序列和后序序列也相同。

正确答案:B

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

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

解析:

正确答案:D

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

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

解析:

正确答案:A

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

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

解析:

正确答案:B

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

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

解析:

正确答案:

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

这篇关于25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.3 二叉树的遍历和线索二叉树 选择题部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107765

相关文章

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

PHP实现二叉树遍历(非递归方式,栈模拟实现)

二叉树定义是这样的:一棵非空的二叉树由根结点及左、右子树这三个基本部分组成,根据节点的访问位置不同有三种遍历方式: ① NLR:前序遍历(PreorderTraversal亦称(先序遍历)) ——访问结点的操作发生在遍历其左右子树之前。 ② LNR:中序遍历(InorderTraversal) ——访问结点的操作发生在遍历其左右子树之中(间)。 ③ LRN:后序遍历(PostorderT

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]