一、 填空题
1. 不相交的树的聚集称之为 森林 。
2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。
3. 深度为k的完全二叉树至少有2 k-1个结点。至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。
4. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为 n 2,则有n0= n2+1。
i-15. 一棵二叉树的第i(i≥1)层最多有2 个结点;一棵有n(n>0)
个结点的满二叉树共有(n+1)/2个叶子和(n-1) /2个非终端结点。 6. 现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树可以得到这一遍历结果。
7. 哈夫曼树 是带权路径长度最小的二叉树。
8. 前缀编码是指任一个字符的编码都 不是 另一个字符编码的前缀的一种编码方法,是设计不等长编码的前提。
9. 以给定的数据集合{4,5,6,7,10,12,18}为结点权值构造的Huffman树的加权路径长度是 165 。
10. 树被定义为连通而不具有 回路 的(无向)图。
11. 若一棵根树的每个结点最多只有 两个 孩子,且孩子又有 左、右 之分,次序不能颠倒,则称此根树为 二叉树 。
12. 高度为k,且有 个结点的二叉树称为 二叉树。
2-1 满
13. 带权路径长度最小的二叉树称为最优二叉树,它又被称为 树。
Huffman
14. 在一棵根树中,树根是 为零的结点,而 为零的结点是 结点。
入度 出度 树叶
k
15. Huffman树中,结点的带权路径长度是指由 到 之间的路径长度与结点权值的乘积。
结点 树根
16. 满二叉树是指高度为k,且有 个结点的二叉树。二叉树的每一层i上,最多有 个结点。
2k-1 2i-1 二、单选题
1. 具有10个叶结点的二叉树中有 (B) 个度为2的结点。 (A)8
(B)9
(C)10
(D)11
2. 对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。
(1)先序 (2)中序
(3)后序 (4)从根开始按层遍历
3. 由2、3、4、7作为结点权值构造的哈夫曼树树的加权路径长度 B 。 A、33 B、30 C、36 D、40 4. 高度为6的满二叉树,总共有的结点数是 B 。 A、15 B、63 C、20 D、25 5. 下面描述根树转换成二叉树的特性中,正确的是 C 。 A、根树转换成的二叉树是唯一的,二叉树的根结点有左、右孩子。
B、根树转换成的二叉树是不唯一的,二叉树的根结点只有左孩子。 C、根树转换成的二叉树是唯一的,二叉树的根结点只有左孩子。 D、根树转换成的二叉树是不唯一的,二叉树的根结点有左、右孩子。 6. 如图所示的4棵二叉树中,不是完全二叉树的是 。 A、 ○ B、 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○
C、 ○ D、 ○ ○ ○ ○ ○ ○ ○ ○ ○ C
7.某二叉树先序遍历的结点序列是abdgcefh,中序遍历的结点序列是dgbaechf,则其后序遍历的结点序列是 D 。
A、bdgcefha B、gdbecfha C、bdgaechf D、gdbehfca 8. 已知二叉树按中序遍历所得到的结点序列为DCBGEAHFIJK, 按后序遍历所得到的结点序列为DCEGBFHKJIA, 按先序遍历所得到的结点序列为 ABCDGEIHFJK 。
9. 设n,m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是 C 。
A、n在m右方 B、n是m祖先 C、n在m左方 D、n是m子孙 10. 二叉树第i 层结点的结点个数最多是(设根的层数为1) :A A)2i-1 B)2i-1
C)2i D) 2i-1
11. 树的后根遍历序列等同于该树对应的二叉树的: B
A)先序序列 B)中序序列 C)后序序列 12. 树最适合用来表示_C___。
A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的数据
13. 由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法_B___。
A. 正确 B. 错误
14. 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为 B 个。
A.15 B.16 C.17 D.47
15. 按照二叉树的定义,具有3个结点的不同形状的二叉树有__C__种。 A. 3 B. 4 C. 5 D. 6 16. 深度为5的二叉树至多有__C__个结点。 A. 16 B. 32 C. 31 D. 10
17. 对一个满二叉树,m个树叶,n个结点,深度为h,则__D__ 。 A. n=h+m B. h+m=2n C. m=h-1 D. n=2 h-1
18. 任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序_A___。 A.不发生改变 B.发生改变 C.不能确定 D.以上都不对 19. 如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为__C__。
A. uwvts B. vwuts C. wuvts D. wutsv 20. 二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法__A__。
A. 正确 B. 错误
21. 在一非空二叉树的中序遍历序列中,根结点的右边_A___。
A. 只有右子树上的所有结点 B. 只有右子树上的部分结点 C. 只有左子树上的部分结点 D. 只有左子树上的所有结点 22. 已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是__D__。
A. acbed B. decab C. deabc D. cedba
23. 实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用_C___存储结构。
A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 顺序存储结构 24. 在线索化二叉树中,t所指结点没有左子树的充要条件是_B___。
A. t—>left=NULL B. t—>ltag=1 C. t—>ltag=1且t—>left=NULL D. 以上都不对
25. 二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法_B___。
A. 正确 B. 错误
26. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。结论__A__是正确的。
A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同 B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同 D.以上都不对
6.42统计二叉树中叶子结点的个数(先序遍历)
typedef struct BiTnode{ ElemType data;
BiTnode *rchild;*lchild; } BiTnode,*BiTree;
Void CountLeaf(BiTree T,int &count){ if(T){ if((!T ->lchild) & &( !T ->rchild)) Count++;//计数器加1
CountLeaf( T ->Lchild,count); CountLeaf( T ->Rchild,count); } }
6.43交换所有结点的左右子树 typedef struct BiTnode{ ElemType data;
BiTnode *rchild;*lchild; } BiTnode,*BiTree;
void Bitree_Revolute(Bitree T) { if(T)
T->lchild<->T->rchild; //交换左右子树 if(T->lchild) Bitree_Revolute(T->lchild);
if(T->rchild) Bitree_Revolute(T->rchild); //左右子树再分别交换各自的左右子树 }//Bitree_Revolute