《数据结构》邓俊辉 网课习题详细解析(第五章:二叉树)

(a)树

1.下列那种数据结构可以高效地兼顾静态操作和动态操作(D)
A.array数组
B.vector向量
C.list列表
D.tree树

解析:数组可以被视为一种简单的向量。向量的静态操作效率高而动态操作效率低;列表的动态操作效率高而静态操作效率低。树能够兼顾静态操作和动态操作的高效性。

2.n个顶点的树有多少条边?(B)
A.n
B.n-1
C.n²
D.2的n次方

解析:树的性质之一就是边数=顶点数-1。

3.树是(C)
A.有向连通图
B.无环平面图
C.连通无环图
D.有向无环图

解析:树是一种特殊的图。树是一种连通无环图、极大无环图、极小连通图。

4.在一棵树中,顶点p是顶点v的父亲,则它们的高度关系是(A)
A.height v <height p
B.height v =height p -1
C.height v =height p +1
D.height p <height v

解析:由于p是v的父亲,因此p的高度一定比v要大,但是具体的大小关系不能确定,只有在顶点v所在的子树刚好对应顶点p最大高度的子树时,才能有B选项成立。

在这里插入图片描述

(b)树的表示

1.用父节点+孩子节点的方法存储n个结点的树,需要的空间是(B)
A.O(1)
B.O(n)
C.O(nlgn)
D.O(n²)

解析:父亲孩子表示法中,每个结点存储的内容包括:自身的秩、自身的数据、父节点的秩、孩子链表。因此总共需要的存储空间线性正比于结点的个数。

2.
在这里插入图片描述
以上图中的树在计算机中表示如下,则第三行中parent[]的内容应该是(B)
在这里插入图片描述

A.0,5,-1,7,0,5,4,7,0,7
B.-1,5,5,7,0,4,5,0,0,7
C.0,1,2,3,4,5,6,7,8,9
D.-1,7,5,2,5,4,1,-1,0,7

解析:parent[]中存放的是父节点的秩,因此只需要找到每一个结点的父节点记录其秩即可。根节点的父节点秩记录为-1。

(c)二叉树

1.高度为h的满二叉树有多少个节点(A)
A.2的(h+1)次方-1
B.2的(h+1)次方
C.2的h次方-1
D.2的h次方

解析:高度为h的满二叉树在每一层上分别有1、2、4…2的h次方个节点,通过等比数列求和公式可以得出答案。

2.一棵高度为h,节点数为n的真二叉树的特点是(D)
A.h=O(logn)
B.真的是二叉树,而不是其他种类的树
C.不存在只有一个父亲的节点
D.不存在只有一个孩子的节点

解析:对于退化为一条单链的二叉树,其高度h=O(n)。真二叉树的特点为不存在度数为1的节点。

3.在长子-兄弟表示法中,树中某节点的长子相当于二叉树中的(B)
A.幼子
B.左子
C.右子
D.长子

解析:二叉树本身是通过长子兄弟表示法进行表示的,而某个节点的长子就是二叉树中的左孩子。

(e1)先序遍历

1.对以下二叉树进行先序遍历:刚访问完结点d时(迭代实现2)栈中的元素从栈顶到栈底依次为(D)
在这里插入图片描述

A.e
B.g,f
C.f,g
D.f

解析:第二种迭代实现的方式为:创建一个栈。从根节点开始,沿着左侧链进行逐一访问,同时将每个结点的右节点放入栈中。每访问完一条左侧链,则将栈顶结点出栈并从该结点开始进行左侧链访问。重复上述过程直到栈变空为止。本题中,栈的元素变化为:
c(访问a后入栈)→f(访问c后入栈)→f,e(访问d后入栈)→e。

2.二叉树是(B)
A.线性结构
B.半线性结构
C.非线性结构
D.钢筋混凝土结构

解析:本题根据定义可知二叉树是半线性结构。

3.若在先序遍历中规定访问完根节点后先访问右子树再访问左子树,则左右子树的入栈顺序是(D)
A.先左后右
B.先右后左
C.同时入栈
D.只有左子入栈,右子不入栈

解析:根据先序遍历的第二种实现方式可知,将左右子的地位对换即可。因此可以得出结论,即只有左子入栈。

4.先序遍历的顺序是(C)
A.先自下而上访问左侧链上的结点,再自下而上访问它们的右子树
B.先自下而上访问左侧链上的结点,再自上而下访问它们的右子树
C.先自上而下访问左侧链上的结点,再自下而上访问它们的右子树
D.先自下而上访问左侧链上的结点,再自上而下访问它们的右子树。

解析:根据先序遍历的特点可知,先序遍历需要首先自上而下访问左侧链上的结点,再自下而上访问这些结点的右子树。

(e2)中序遍历

1.中序遍历中第一个被访问的节点是(A)
A.最左的节点
B.最右的节点
C.根节点
D.左侧分支的叶节点

解析:中序遍历中首先需要访问整棵树中最左侧的节点。

2.对以下二叉树进行中序遍历,则节点c刚被访问完毕时栈中的元素从栈顶到栈底为(B)
在这里插入图片描述

A.d,c,f
B.d,f
C.f,g,d,e
D.d

解析:由于本题采用中序遍历,因此栈中元素的变化情况为:b、a(第一条左侧链)→f、d、c(第二条左侧链)。因此c刚被访问完时栈中的元素为:d、f(换一个顺序)。

(e4)层次遍历

1.层次遍历的次序是(C)
A.先根再左子最后右子
B.先左子再根最后右子‘
C.自上而下访问各个深度的结点,同样深度的结点中自左向右
D.自下而上访问各个深度的结点,同样深度的结点中自左向右。

解析:层次遍历的过程就是:将所有节点按照深度划分为不同的等价类,每个等价类中的结点按照从左到右的顺序进行访问。

2.对以下二叉树进行层次遍历:结点F正欲出队时队列中的元素从队头到队尾为:
在这里插入图片描述

A.F
B.F,G
C.E,F
D.E,F,G

解析:本题中结点的入队顺序为:A→B→C,D→D→E,F→F,G→G

(e5)重构

后序遍历序列中最后一个结点是(A)
A.根节点
B.最左边的结点
C.最右边的结点
D.深度最大的结点

解析:后序遍历可以视为左子树、右子树、根节点的顺序进行遍历,因此后序遍历中最后一个结点是根节点。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值