1.某二叉树的前序和后序遍历序列正好相反,则该二叉树一定是
B
A.空或只有一个结点
B.高度等于其结点数
C.任一结点无左孩子
D.任一结点无右孩子
A:前序与后序遍历是一样的
C:任意结点无左孩子,那么前序遍历结果是ABC,后序遍历结果是CBA
2.已知一棵二叉树的先序遍历结果是ABC,则以下哪个序列是不可能的中序遍历结果:
D
A.ABC
B.BAC
C.CBA
D.CAB
这道题我用 先序序列和中序序列恢复二叉树 的思想来做
首先是A,先序序列是ABC,中序序列是ABC,那么生成的二叉树是这样
咱们再倒推一下先序序列和中序序列发现是符合的,A对
B,C用一样的方法
再看D:
先序序列是ABC,中序序列是CAB,那么生成的二叉树是这样:
倒推,这个二叉树的先序序列是ACB,不符合。
3.如果二叉树的后序遍历结果是FDEBGCA,中序遍历结果是FDBEACG,那么该二叉树的前序遍历结果是什么?
C
A.ABCDEFG
B.ABDFEGC
C.ABDFECG
D.ABDEFCG
做完2,3题,可以做这个题巩固一下:
4-14 还原二叉树&&4-15 根据后序和中序遍历输出先序遍历
4.给定二叉树如下图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。若遍历后的结点序列为3、1、7、5、6、2、4,则其遍历方式是:
B
A.NRL
B.RNL
C.LRN
D.RLN
5.在下述结论中,正确的是:
①只有一个结点的二叉树的度为0;
②二叉树的度为2;
③二叉树的左右子树可任意交换;
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A
A.①④
B.②④
C.①②③
D.②③④
结点的度:结点所拥有的子树的个数
树的度:树中各结点的最大值
所以只有一个结点的二叉树度为0
二叉树可能为空树,也可能没有左子树或右子树,所以度不一定为2
二叉树的左右子树肯定不能任意交换啊
数的深度:数中结点的最大层数
满二叉树:一颗二叉树的每一层结点个数都达到了最大
完全二叉树:一颗深度为k的有n个结点的二叉树,对其结点按从上到下,从左到右的顺序编号,编号为i的结点的位置与满二叉树中编号为i的结点位置相同。
6.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序
B
A.发生改变
B.不发生改变
C.不能确定
D.以上都不对
7.按照二叉树的定义,具有3个结点的二叉树有几种?
C
A.3
B.4
C.5
D.6
8.下面的函数PreOrderPrintLeaves(BinTree BT)
按前序遍历的顺序打印出二叉树BT
的所有叶子结点。则下列哪条表达式应被填在空中?
D
void PreOrderPrintLeaves( BinTree BT )
{ if (BT) {
if (___________________) printf(" %d", BT->Data);
PreOrderPrintLeaves( BT->Left );
PreOrderPrintLeaves( BT->Right );
}
}
A.BT->Data != 0
B.!BT->Right
C.!BT->Left
D.!(BT->Left || BT->Right)
练习题:
9.要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:
B
A.只有左子树
B.只有右子树
C.结点的度均为1
D.结点的度均为2
10.若将一棵树 T 转化为对应的二叉树 BT,则下列对 BT 的遍历中,其遍历序列与 T 的后根遍历序列相同的是:
B
A.先序遍历
B.中序遍历
C.后序遍历
D.按层遍历