【PTA】【数据结构与算法】树的基本概念

判断题

1.存在一棵总共有2016个结点的二叉树,其中有16个结点只有一个孩子。 (3分)
TF
2.设只包含根结点的二叉树高度为0,则高度为k的二叉树最小结点数为k+1。 (2分)
TF
3.在含有n个结点的树中,边数只能是n-1条。 (1分)
TF
4.完全二叉树中,若一个结点没有左孩子,则它必是树叶。 (1分)
TF
5.已知一棵二叉树的先序遍历结果是ABC, 则CAB不可能是中序遍历结果。 (2分)
TF
6.二叉树是度为 2 的树。(2分)
TF
7.具有10个叶结点的二叉树中,有9个度为2的结点。 (1分)
TF
8.某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。 (2分)
TF
9.若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。 (2分)
TF
10.某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。 (2分)
TF
11.若A和B都是一棵二叉树的叶子结点,则存在这样的二叉树,其前序遍历序列为…A…B…,而中序遍历序列为…B…A…。 (2分)
TF
12.二叉树的前序遍历并不能唯一确定这棵树,但是如果我们还知道该树的根结点是那一个,则可以确定这棵二叉树( )。 (1分)
TF
13.将一棵完全二叉树存于数组中(根结点的下标为1)。则下标为23和24的两个结点是兄弟。 (1分)
TF

选择题

1.树最适合于用来表示 (1分)
选项
A有序数据元素
B无序数据元素
C元素之间无联系的数据
D元素之间具有分支层次关系的数据
2.某二叉树的前序和后序遍历序列正好相反,则该二叉树一定是 (2分)
选项
A空或只有一个结点
B 高度等于其结点数
C任一结点无左孩子
D任一结点无右孩子
3.设n、m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是 (3分)
选项
An在m左方
Bn在m右方
Cn是m祖先
Dn是m子孙
4.二叉树中第5层(根的层号为1)上的结点个数最多为:(2分)
选项
A8
B15
C16
D32
5.先序遍历图示二叉树的结果为 (2分)

在这里插入图片描述

选项
AA,B,C,D,H,E,I,F,G
B A,B,D,H,I,E,C,F,G
CH,D,I,B,E,A,F,C,G
DH,I,D,B,E,F,G,A,C
6.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中有多少个叶子结点? (3分)
选项
A4
B6
C8
D10
7.设每个d叉树的结点有d个指针指向子树,有n个结点的d叉树有多少空链域? (2分)
选项
And
Bn(d−1)
Cn(d−1)+1
D以上都不是
8.已知一棵二叉树的先序遍历结果是ABC,则以下哪个序列是不可能的中序遍历结果: (2分)
选项
AABC
BBAC
CCBA
DCAB
9.给定二叉树如下图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。若遍历后的结点序列为3、1、7、5、6、2、4,则其遍历方式是: (2分)

在这里插入图片描述

选项
ANRL
B RNL
CLRN
DRLN
10.设高为h的二叉树(规定叶子结点的高度为1)只有度为0和2的结点,则此类二叉树的最少结点数和最多结点数分别为: (3分)
选项
A2h, 2​h−1
B 2h−1, 2​h−1
C2h−1, 2h-1−1
D2​h-1+1, 2​h −1
11.在下述结论中,正确的是: (2分)

①只有一个结点的二叉树的度为0;

②二叉树的度为2;

③二叉树的左右子树可任意交换;

④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

选项
A①④
B②④
C①②③
D②③④
12.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序 (2分)
选项
A发生改变
B 不发生改变
C不能确定
D以上都不对
13.如果二叉树的前序遍历结果是12345,后序遍历结果是32541,那么该二叉树的中序遍历结果是什么? (2分)
选项
A23145
B23154
C24135
D无法确定
14.要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:(2分)
选项
A只有左子树
B 只有右子树
C结点的度均为1
D结点的度均为2
15.已知一棵二叉树的树形如下图所示,其后序序列为{ e, a, c, b, d, g, f }。树中与结点a同层的结点是:(3分)

在这里插入图片描述

选项
Ac
B d
Cf
Dg
16.如果二叉树的后序遍历结果是FDEBGCA,中序遍历结果是FDBEACG,那么该二叉树的前序遍历结果是什么? (2分)
选项
AABCDEFG
BABDFEGC
CABDFECG
DABDEFCG
17.已知二叉树的后序遍历是dabec,中序遍历是debac,则其前序遍历是()。 (2分)
选项
Aacbed
Bdecab
Cdeabc
Dcedba
18.某二叉树的先序序列和后序序列正好相反,则下列说法错误的是()。 (2分)
选项
A二叉树不存在
B若二叉树不为空,则二叉树的深度等于结点数
C若二叉树不为空,则任一结点不能同时拥有左孩子和右孩子
D若二叉树不为空,则任一结点的度均为1
19.对二叉树的结点从1开始进行编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()遍历实现编号。 (2分)
选项
A中序
B 后序
C层序
D先序
20.在一非空二叉树的中序遍历中,根结点的右边()。 (2分)
选项
A只有右子树上的所有结点
B只有右子树上的部分结点
C只有左子树上的部分结点
D只有左子树上的全部结点
21.一棵树可转换成为与其对应的二叉树,则下面叙述正确的是()。 (2分)
选项
A树的先根遍历序列与其对应的二叉树的先序遍历相同
B树的后根遍历序列与其对应的二叉树的后序遍历相同
C树的先根遍历序列与其对应的二叉树的中序遍历相同
D以上都不对
22.已知一棵二叉树的先序序列和中序序列分别为GFDBHCEA和DFHBGCAE,则该二叉树的后序序列为()。 (2分)
选项
ADHBFAECG
BDHBFEACG
CDBHFAECG
DDFAEHBCG
23.设x和y是二叉树中的任意两个结点,若在先序遍历中x在y之前,而在后序遍历中x在y之后,则x和y的关系是()。 (2分)
选项
Ax是y的左兄弟
Bx是y的右兄弟
Cx是y的祖先
Dx是y的子孙
24.以下算法的功能是()。 (4分)
int function(BTreeNode* BT, ElemType x){
   int n=0;
   if(BT!=NULL)
   {   
        if(BT->data==x)   n++;
        n+= function (BT->left, x);
        n+= function (BT->right, x);
}
   return n;
}
选项
A求二叉树结点个数
B 求二叉树中值为x的结点个数
C求二叉树中值为x结点为根的子树结点数
D求二叉树左右子树结点数
25.以下算法的功能是()。 (4分)
void test(bitree *t)
{
   if (t) 
   {
      test(t->lchild);
      test(t->rchild);
      cout<<t->data;
   }
}
选项
A输出二叉树的根结点值
B前序遍历二叉树
C中序遍历二叉树
D后序遍历二叉树
26.一棵有1025个结点的二叉树的高度为多少? (2分)
选项
A10
B11
C11~1025之间
D10~1024之间
27.一棵度为4的树中有20个度为4的结点、10个度为3的结点、1个度为2的结点和10个度为1的结点, 则叶子结点有多少个? (2分)
选项
A41
B 82
C113
D122

程序填空题

1.下列代码的功能是将二叉树T中的结点按照层序遍历的顺序输出。
typedef struct TreeNode *Tree;
struct TreeNode
{
   int Key;
   Tree  Left;
   Tree  Right;
};

void Level_order ( Tree T )
{
   Queue Q;

   if ( !T ) return; 
   Q = CreateQueue( MaxElements ); 
   Enqueue( T, Q ); 
   while ( !IsEmpty( Q ) ){
      T = Front_Dequeue ( Q );
      /* return the front element and delete it from Q */
      printf("%d ", T->Key);
      if ( T->Left ) 
      	Enqueue(T->Left,Q) (3);
      if ( T->Right (3) )    
		Enqueue(T->Right,Q) (3);
   }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值