第6章 树和二叉树
一.选择
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
(1)由3 个结点可以构造出多少种不同的二叉树?( D )
A.2 B.3 C.4 D.5
(2)一棵完全二叉树上有1001个结点,其中叶子结点的个数是(D )。
A.250 B. 500 C.254 D.501
(3)一个具有1025个结点的二叉树的高h为( C )。
A.11 B.10 C.11至1025之间 D.10至1024之间
(4)深度为h的满m叉树的第k层有( A )个结点。(1=
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
存储结构,要交换其所有分支结点左、右子树的位置,利用( D )遍历方法最合适。
A.前序 B.中序 C.后序 D.按层次
(7)一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( B )。
A.所有的结点均无左孩子 B.所有的结点均无右孩子
C.只有一个叶子结点 D.是任意一棵二叉树
(8)某二叉树的前序序列和后序序列正好相反,则该二叉树一定是( C )的二叉树。
A.空或只有一个结点 B.任一结点无左子树
C.高度等于其结点数 D.任一结点无右子树
(9)若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为( C )。
A.X的双亲 B.X的右子树中最左的结点
C.X的左子树中最右结点 D.X的左子树中最右叶结点
(10)引入二叉线索树的目的是( A )。
A.加快查找结点的前驱或后继的速度 B.为了能在二叉树中方便的进行插入与删除
C.为了能方便的找到双亲 D.使二叉树的遍历结果唯一
二. 简答题
(1)试找出满足下列条件的二叉树
先序序列与后序序列相同
中序序列与后序序列相同
先序序列与中序序列相同
中序序列与层次遍历序列相同
答:(1)若先序序列与后序序列相同,则或为空树,或为只有根结点的二叉树
(2) 若中序序列与后序序列相同,则或为空树,或为任一结点至多只有左子树的二叉树.
(3) 若先序序列与中序序列相同,则或为空树,或为任一结点至多只有右子树的二叉树.
(4) 若中序序列与层次遍历序列相同,则或为空树,或为任一结点至多只有右子树的二叉树
2. 试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。
DLR: A B D F J G K C E H I L M
LDR: B F J D G K A C H E L I M
LRD:J F K G D B H L M I E C A
(3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
试为这8个字母设计赫夫曼编码。
试设计另一种由二进制表示的等长编码
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
对于上述实例,比较两种方案的优缺点。
6、 解:方案1;哈夫曼编码
先将概率放大100倍,以方便构造哈夫曼树。
w={7,19,2,6,32,3,21,10},按哈夫曼规则:
0 1
0 1 0 1
19 21 32
1 1
0 1 0 1
7 10 6
1 1
2 3
( 100)
(40) (60)
19 21 32 (28)
17 (11)
7 10 6 (5)
2 3
方案比较:
方案1的WPL=2*(0.19+0.32+0.21)+4*(0.07+0.06+0.10)+5*(0.02+0.03)=1.44+0.92+0.25=2.61
方案2的WPL=3(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3
结论:哈夫曼编码优于等长二进制编码
(4)已知下列字符A、B、C、D、E、F、G的权值分别为3、12、7、4、2、8,11,试填写出其对应哈夫曼树HT的存储结构的初态和终态。
初态:
weight
parent
lchild
rchild
1
3
0
0
0
2
12
0
0
0
3
7
0
0
0
4
4
0
0
0
5
2
0
0
0
6
8
0
0
0
7
11
0
0
0
8
0
0
0
9
0
0
0
10
0
0
0
11
0
0
0
12
0
0
0
13
0
0
0
weight
parent
lchild
rchild
1
3
8
0
0
2
12
12
0
0
3
7
10
0
0
4
4
9
0
0
5
2
8
0
0
6
8
10
0
0
7
11
11
0
0
8
5
9
5
1
9
9
11
4
8
10
15
12
3
6
11
20
13
9
7
12
27
13
2
10
13
47
0
11
12
终态
方法是:由前序先确定root,由中序可确定root的左、右子树。然后由其左子树的元素集合和右子树的集合对应前序遍历序列中的元素集合,可继续确定root的左右孩子。将他们分别作为新的root,不断递归,则所有元素都将被唯一确定,问题得解。
(5 )给定二叉树的两种遍历序列,分别是:
前序遍历序列:D,A,C,E,B,H,F,G,I;
中序遍历序列:D,C,B,E,H,A,G,I,F,试画出二叉树B。
(6)给定如图所示二叉树T,请画出与其对应的中序线索二叉树。
28
25 33
40 60 08 54
55
三.算法设计题
2. 以二叉链表作为二叉树的存储结构,编写以下算法:
(1)写出中序遍历二叉树的递归算法;
(1)统计二叉树的结点个数。
答: (1)
int inOrderTraverse(BiTree T)
{ // 初始条件:二叉树T存在,中序递归遍历T;
if(T==NULL) return 1;
if(T!=NULL) // T不空
{ inOrdTraverse(T->lchild) ; // 中序遍历左子树
printf("%5c",T->data); // 访问根结点
inOrdTraverse(T->rchild); // 中序遍历右子树
}
}
(2) int countND(BiTree T)
{ int n=0,k=0,m=0;
if(T==NULL) return 0;
else
{ if(T->lchild!=NULL ) k=countND(T->lchild); // 后序遍历左子树
if(T->rchild!=NULL ) m=countND(T->rchild); // 再后序遍历右子树
n=m+k+1 ;
}
return n; }