4-1
某二叉树的前序和后序遍历序列正好相反,则该二叉树一定是
A.空或只有一个结点
B.高度等于其结点数
C.任一结点无左孩子
D.任一结点无右孩子
前序遍历:中左右
后序遍历:左右中
正好相反,有两种情况:
①都没有右孩子 中左 左中
②都没有左孩子 中右 右中
所以每行只有一个结点,高度等于其结点数。
4-2
已知一棵二叉树的先序遍历结果是ABC,则以下哪个序列是不可能的中序遍历结果:
A.ABC
B.BAC
C.CBA
D.CAB
4-3
如果二叉树的后序遍历结果是FDEBGCA,中序遍历结果是FDBEACG,那么该二叉树的前序遍历结果是什么?
A.ABCDEFG
B.ABDFEGC
C.ABDFECG
D.ABDEFCG
后序:左右根
中序:左根右
4-4
给定二叉树如下图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。若遍历后的结点序列为3、1、7、5、6、2、4,则其遍历方式是:
A.NRL
B.RNL
C.LRN
D.RLN
很简单,看图能看出来。。。
4-5
在下述结论中,正确的是:
①只有一个结点的二叉树的度为0;
②二叉树的度为2;
③二叉树的左右子树可任意交换;
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①④
B.②④
C.①②③
D.②③④
②空二叉树没有度
③交换之后就不是同一个二叉树了
4-6
任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序
A.发生改变
B.不发生改变
C.不能确定
D.以上都不对
叶子结点的相对次序是不发生改变的,因为发生改变的只有根结点
MLR LMR LRM
4-7
按照二叉树的定义,具有3个结点的二叉树有几种?
A.3
B.4
C.5
D.6
4-8
下面的函数PreOrderPrintLeaves(BinTree BT)按前序遍历的顺序打印出二叉树BT的所有叶子结点。则下列哪条表达式应被填在空中?
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)
4-9
要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:
A.只有左子树
B.只有右子树
C.结点的度均为1
D.结点的度均为2
ML R
L MR
4-10
若将一棵树 T 转化为对应的二叉树 BT,则下列对 BT 的遍历中,其遍历序列与 T 的后根遍历序列相同的是:
A.先序遍历
B.中序遍历
C.后序遍历
D.按层遍历
需要知道如何将一棵树转化为二叉树:对于每一个结点,第一个孩子结点放左子树,其余孩子结点(即第一个孩子结点的兄弟结点)放在第一个孩子结点的右子树,其余的孩子结点再依次放在右子树的右子树,依次类推。