作业-树和二叉树
第六章 树和二叉树 作业
以数据集{2 以数据集{2,5,7,9,13}为权值构造一棵 {2, 13}为权值构造一棵 huffman树 并计算其带权路径长度。 huffman树,并计算其带权路径长度。
2 5 7 9 36 14 22 13
7
7
9
13
2
5
WPL=(2+5)*3+(7+9+13)*2=79
t)
//释放左子树 //释放左子树 //释放右子树 //释放右子树 //释放根节点 //释放根节点
已知一棵二叉树的中序序列为cbedahgijf, 已知一棵二叉树的中序序列为cbedahgijf,后序 序列为cedbhjigfa, 序列为cedbhjigfa,画出该二叉树的先序线索二 叉树。 叉树。 a 中序:c 中序:c b e d a h g i j f 后序:c 后序:c e d b h j i g f a 先序:abcdefghij 先序:abcdefghij
编写一个将二叉树中每个结点的左右孩子交换的算法 分析:采用递归的方式求解。当二叉树的左右孩子之一 分析:采用递归的方式求解。 不空时,将左右孩子交换, 不空时,将左右孩子交换,然后再分别递归处理左右 子树。 子树。
void exchange( BiTree &t) { BiTree m ; if ( !t->lchild||!t->rchild) !t->lchild||!t{ m=tm=t->lchild ; t->lchild =t->rchild; t=tt->rchild=m; exchange(texchange(t->lchild) ; exchange(texchange(t->rchild) ; } }
数据结构树和二叉树习题及答案
习题六树和二叉树一、单项选择题1.以下说法错误的是()A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继C.树形结构可以表达(组织)更复杂的数据D.树(及一切树形结构)是一种”分支层次”结构E.任何只含一个结点的集合是一棵树2.下列说法中正确的是()A.任何一棵二叉树中至少有一个结点的度为 2B.任何一棵二叉树中每个结点的度都为 2C.任何一棵二叉树中的度肯定等于 2D.任何一棵二叉树中的度可以小于 23.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储C.将树、森林转换成二叉树D.体现一种技巧,没有什么实际意义4.树最适合用来表示()A.有序数据元素 B .无序数据元素C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C .15 D .不确定6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F对应的二叉树根结点的右子树上的结点个数是()。
A.M1 B .M1+M2 C .M3 D .M2+M37.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A.250 B .500 C .254 D .505 E .以上答案都不对8.设给定权值总数有n 个,其哈夫曼树的结点总数为()A.不确定 B . 2n C . 2n+1 D . 2n-19.二叉树的第I层上最多含有结点数为()I I-1 I-1 IA.2I B .2I-1-1 C .2I-1D .2I-110.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+111.利用二叉链表存储树,则根结点的右指针是()。
(山东科技大学)PTA数据结构答案与解析
2.单选题
2-1* 如果一棵非空k(k≥2)叉树T中每个非叶子结点都有k个孩子,则称T为正则k叉树。若T的高度为h(单结点的树 h=1),则T的结点数最多为:(3分) 1. ( 2. ( 3. ( )/(k−1) )/(k−1) )/(k−1)
4. 以上都不是 解析:将k=2带入,套用二叉树的结点树结论,发现A为正确形式 答案: A 2-2* 如果一棵非空k(k≥2)叉树T中每个非叶子结点都有k个孩子,则称T为正则k叉树。若T的高度为h(单结点的树 h=1),则T的结点数最少为:(3分) 1. ( 2. ( )/(k−1)+1 )/(k−1)−1
3. 4. 解析:这道题我不知道怎么正确推导答案,不过这题可以举一个正确的二叉树的例子,带答案用排除法做 答案: D 2-3 要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:(2分) 1. 只有左子树 2. 只有右子树 3. 结点的度均为1 4. 结点的度均为2 解析:略 答案: B 2-4 已知一棵二叉树的树形如下图所示,其后序序列为{ e , a , c , b , d , g , f }。树中与结分支数,n代表结点数,联立上边二式可得正确答案,故选C 答案: C 单位: 浙江大学 2-8 有一个四叉树,度2的结点数为2,度3的结点数为3,度4的结点数为4。问该树的叶结点个数是多少?(2分) 1. 10 2. 12 3. 20 4. 21 解析:根据题意随便画一种符合题意的图即可判断,也可以通过公式推导。
解析:知道中序遍历和先序遍历,是可以画出树来的。如果不是很会这种方法,反正只有三个节点,大可以画图举 例。可得没有树满足先序是ABC,中序是CAB的。 我们这样去分析:由先序遍历可得A是根节点;由中序遍历可得C是左孩子,B是右孩子,而先序遍历中B是左孩 子,C是右孩子,矛盾,所以不可能滴 答案: F
树和二叉树——精选推荐
第6章 树和二叉树内容概要:本章主要介绍树,二叉树,最优二叉树的相关概念和操作,存储结构和相应的操作,并在综合应用设计中,给出了对应算法的C 语言实现。
教学目标1.理解各种树和森林与二叉树的相应操作。
2.熟练掌握二叉树的各种遍历算法,并能灵活运用遍历算法实现二叉树的其他操作。
3.熟练掌握二叉树和树的各种存储结构及其建立的算法。
4.掌握哈夫曼编码的方法。
5.通过综合应用设计,掌握各种算法的C 语言实现过程。
基本知识点:树和二叉树的定义、二叉树的存储表示、二叉树的遍历以及其它操作的实现、树和森林的存储表示、树和森林的遍历以及其它操作的实现、最优树和赫夫曼编码重点:二叉树的性质、二叉树的遍历及其应用,构造哈夫曼树。
难点:编写实现二叉树和树的各种操作的递归算法。
本章知识体系结构:课时安排:6个课时树的定义 树树的性质 树的逻辑表示法 树形表示法 树的存储结构 双亲存储结构 文氏表示法凹入表示法 括号表示法 孩子存储结构 孩子双亲存储结构二叉树二叉树的定义 二叉树的性质二叉树的逻辑表示法(采用树的逻辑表示法)二叉树的存储结构二叉树的顺序存储结构先序遍历 中序遍历 后序遍历二叉树的遍历 二叉树的链式存储结构(二叉链) 由先序序列和中序序列构造二叉树 由中序序列和后序序列构造二叉树二叉树的构造 二叉树的线索化 哈夫曼树二叉树和树之间的差别 二叉树与树、森林之间的转换二叉树和树课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标掌握树、二叉树的基本概念和术语,二叉树的性质教学重点二叉树的定义、二叉树的性质、链式存储结构教学难点二叉树的性质、链式存储二叉树的基本操作组织教学一、树的定义二、树的基本概念三、二叉树的定义、性质四、二叉树的顺序存储结构和链式存储结构五、小结作业复习本讲内容并预习下一讲内容课堂情况及课后分析课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标掌握二叉树遍历的三种方法及二叉树的基本操作教学重点二叉树的遍历算法教学难点中序与后序遍历的非递归算法组织教学一、复习二叉树的定义二、遍历二叉树的三种方法三、递归法遍历二叉树四、二叉树的基本操作五、总结作业复习本讲内容并预习下一讲内容课堂情况及课后分析课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标理解树与森林的转换,掌握哈夫曼树教学重点哈夫曼树教学难点树与森林的转换组织教学一、导入二、树与森林三、哈夫曼树四、小结作业习题6课堂情况及课后分析前面几章讨论的数据结构都属于线性结构,线性结构的特点是逻辑结构简单,易于进行查找、插入和删除等操作,可用于描述客观世界中具有单一前驱和后继的数据关系。
数据结构 第六章 树和二叉树作业及答案
第六章树和二叉树作业一、选择题(每题2分,共24分)。
1. 一棵二叉树的顺序存储情况如下:树中,度为2的结点数为( C )。
A.1 B.2 C.3 D.42. 一棵“完全二叉树”结点数为25,高度为(B )。
A.4 B.5 C.6 D.不确定3.下列说法中,(B )是正确的。
A. 二叉树就是度为2的树B. 二叉树中不存在度大于2的结点C. 二叉树是有序树D. 二叉树中每个结点的度均为24.一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是(B )。
A. CABDEFGB. BCDAEFGC. DACEFBGD. ADBCFEG5.线索二叉树中的线索指的是(C )。
A.左孩子 B.遍历 C.指针 D.标志6. 建立线索二叉树的目的是(A )。
A. 方便查找某结点的前驱或后继B. 方便二叉树的插入与删除C. 方便查找某结点的双亲D. 使二叉树的遍历结果唯一7. 有 D )示意。
A.B.C.D.8. 一颗有2046个结点的完全二叉树的第10层上共有(B )个结点。
A. 511B. 512C. 1023D. 10249. 一棵完全二叉树一定是一棵(A )。
A. 平衡二叉树B. 二叉排序树C. 堆D. 哈夫曼树10.某二叉树的中序遍历序列和后序遍历序列正好相反,则该二叉树一定是( C )的二叉树。
A .空或只有一个结点B .高度等于其结点数C .任一结点无左孩子D .任一结点无右孩子11.一棵二叉树的顺序存储情况如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15A B C D E 0 F 0 0 G H 0 0 0 X结点D 的左孩子结点为( D )。
A .EB .C C .FD .没有12.一棵“完全二叉树”结点数为25,高度为( B )。
A .4B .5C .6D .不确定二、填空题(每空3分,共18分)。
1. 树的路径长度:是从树根到每个结点的路径长度之和。
对结点数相同的树来说,路径长度最短的是 完全 二叉树。
数据结构树和二叉树习题(有答案)
E F D GAB/+ +* - C* 第六章树和二叉树一、选择题1.已知一算术表达式的中缀形式为 A+B*C-D/E ,后缀形式为ABC*+DE/-,其前缀形式为( )A .-A+B*C/DE B. -A+B*CD/E C .-+*ABC/DED. -+A*BC/DE【北京航空航天大学 1999 一、3 (2分)】2.算术表达式a+b*(c+d/e )转为后缀表达式后为()【中山大学 1999 一、5】A .ab+cde/*B .abcde/+*+C .abcde/*++ D.abcde*/++3. 设有一表示算术表达式的二叉树(见下图),它所表示的算术表达式是()【南京理工大学1999 一、20(2分)】A. A*B+C/(D*E)+(F-G)B. (A*B+C)/(D*E)+(F-G)C. (A*B+C)/(D*E+(F-G ))D. A*B+C/D*E+F-G4. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T 中的叶子数为()A .5 B.6 C.7D .8【南京理工大学 2000 一、8 (1.5分)】5. 在下述结论中,正确的是()【南京理工大学 1999 一、4 (1分)】①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A .①②③ B .②③④ C.②④D .①④6. 设森林F 对应的二叉树为B ,它有m 个结点,B 的根为p,p 的右子树结点个数为n,森林F中第一棵树的结点个数是()A .m-nB .m-n-1C .n+1D .条件不足,无法确定【南京理工大学2000 一、17(1.5分)】7. 树是结点的有限集合,它((1))根结点,记为T 。
其余结点分成为m (m>0)个((2))的集合T1,T2,…,Tm ,每个集合又都是树,此时结点T 称为Ti 的父结点,Ti 称为T 的子结点(1≤i ≤m )。
树与二叉树典型例题讲解
A
F
B
J
E
F H
G
I J
例6.14
Huffman编码设计实例
已知某系统在通信联络中只可能出现8种字符,其概率分别为0.05, 0.29,0.07,0.08,0.14, 0.23,0.03,0.11,试设计Huffman编码。 解一:先构造Huffman树,再进行编码。 Huffman编码实现过程:以报文所用的不同字符为叶结点,以字符 出现频率为权重构造Huffman树;然后将树中结点指向其左孩子的 分支标“0”,指向其右孩子的分支标“1”;每个字符的编码即为 从根到每个叶子(字符)的路径上得到的0、1序列。这种对字符的 编码就是Huffman编码。
100
0 1
HC
42
0 1 0
58
1
0
1 2
0 1
1 0
1
0
3
1
1 1 0 0 0
1
1 1 0 1 1
1
1 0 1 1
0
1
23
0
19
1
29
1
29
1
11
0
8 5
14
0
15
1
4 5 6 7 8
1
3 Huffman树
7
8 Huffman编码
解二:利用Huffman编码算法实现。根据题意,取8个字符的权分别为 (5,29,7,8,14,23,3,11),n=8,则m=2*8-1=15,按上述 算法可构造一棵Huffman树,如下左图和右图分别Huffman树的初始 状态和终止状态。
a
b b d g e h i c ^ d c ^
f e ^ g
^ ^ ^
树和二叉树习题及答案
一、填空题1. 不相交的树的聚集称之为森林。
2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。
3. 深度为k的完全二叉树至少有2 k-1个结点。
至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。
4. 在一棵二叉树中,度为零的结点的个数为n,度为2的结点的个数为n2,则有n= n2+1。
5. 一棵二叉树的第i(i≥1)层最多有2 i-1个结点;一棵有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,且有个结点的二叉树称为二叉树。
2k-1 满13. 带权路径长度最小的二叉树称为最优二叉树,它又被称为树。
Huffman14. 在一棵根树中,树根是为零的结点,而为零的结点是结点。
入度出度树叶15. Huffman树中,结点的带权路径长度是指由到之间的路径长度与结点权值的乘积。
结点树根16. 满二叉树是指高度为k,且有个结点的二叉树。
二叉树的每一层i上,最多有个结点。
2k-1 2i-1二、单选题1. 具有10个叶结点的二叉树中有 (B) 个度为2的结点。
(A)8 (B)9 (C)10 (D)112.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。
第六章-树和二叉树
之
树 和 二 叉 树 13
1 2 3 A B C
4 5 6 7 0 D E F
8 0
9 10 0 G
¾ 二叉树顺序存储的算法描述
数 据 结 构
¾ 初始化二叉树
之
树 和 二 叉 树 14
#define Max_Size 100 typedef int TElemType; typedef TElemType SqBT[Max_Size+1]; void InitBT(SqBT bt){//设置空树 int i; for(i=1;i<=Max_Size;i++) bt[i]=0; }
数 据 结 构
之
树 和 二 叉 树 19
¾ 后序遍历顺序二叉树算法 void PostBT(SqBT bt,int i){ if(i>Max_Size||!bt[i]) return; PostBT(bt,2*i); PostBT(bt,2*i+1); printf("%3d ",bt[i]); }
数 据 结 构
之
树 和 二 叉 树 4
5. 孩子结点、双亲结点、兄弟结点、堂兄弟 结点、祖先结点、子孙结点…… 6. 结点的层次从根开始,根为第一层,根的 孩子为第二层;若某结点在第L层,则其 子树的根就在第L+1层。 7. 树的深度或高度:树中结点的最大层次。 8. 有序树:如果将树中结点的各子树看成是 从左至右有次序的;反之,则是无序树。 9. 森林:是m棵互不相交的树的集合。
数 据 结 构
之
树 和 二 叉 树 25
¾ 打印一维数组 void printSq(SqBT bt){ int i; printf("\nSeqArray:"); for(i=1;i<=Max_Size;i++) printf("%3d ",bt[i]); }
树和二叉树习题
树和二叉树习题集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-第6章 树和二叉树一、选择题1.算术表达式a+b*(c+d/e )转为后缀表达式后为( B )A .ab+cde/*B .abcde/+*+C .D .abcde*/++2. 设有一表示算术表达式的二叉树(见下图),它所表示的算术表达式是( C ) A. A*B+C/(D*E)+(F-G) B. (A*B+C)/(D*E)+(F-G)C. (A*B+C)/(D*E+(F-G ))D. A*B+C/D*E+F-G3. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T 中的叶子数为( D )A .5B .6C .7D .84. 在下述结论中,正确的是( D )①只有一个结点的二叉树的度为0; ②二叉树的度为2; ③二叉树的左右子树可任意交换;④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A .①②③B .②③④C .②④D .①④5. 设森林F 对应的二叉树为B ,它有m 个结点,B 的根为p,p 的右子树结点个数为n,森林F 中第一棵树的结点个数是( A )A .m-nB .m-n-1C .n+1D .条件不足,无法确定6.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( B )A.9 B.11 C.15 D.不确定7.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。
与森林F对应的二叉树根结点的右子树上的结点个数是( D )。
A.M1 B.M1+M2 C.M3 D.M2+M38.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( E )A. 250 B. 500 C.254 D.505 E.以上答案都不对(501)9. 有关二叉树下列说法正确的是( B )A.二叉树的度为2 B.一棵二叉树的度可以小于2 C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为210.二叉树的第I层上最多含有结点数为( c )A.2I B. 2I-1-1 C. 2I-1 D.2I -111. 一个具有1025个结点的二叉树的高h为( C )A.11 B.10 C.11至1025之间 D.10至1024之间12.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( B )结点A.2h B.2h-1 C.2h+1 D.h+113. 一棵树高为K的完全二叉树至少有( C )个结点A.2k–1 B. 2k-1–1 C. 2k-1 D. 2k 14.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( C )次序的遍历实现编号。
第6-10章 树和二叉树--答案
第6章树和二叉树一、基础知识题1.列出右图所示二叉树的叶结点、分支结点和每个结点的层次。
[解答]二叉树的叶结点有⑥、⑧、⑨。
分支结点有①、②、③、④、⑤、⑦。
结点①的层次为0;结点②、③的层次为1;结点④、⑤、⑥的层次为2;结点⑦、⑧的层次为3;结点⑨的层次为4。
2.使用(1)顺序表示和(2)二叉链表表示法,分别画出右图所示二叉树的存储表示。
[解答](1)顺序表示(2)二叉链表表示3.在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?[解答]结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。
4.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
[解答]具有3个结点的树具有3个结点的二叉树5.如果一棵树有n1个度为1的结点,有n2个度为2的结点,…,n m个度为m的结点,试问有多少个度为0的结点?试推导之。
[解答]总结点数n=n0+n1+n2+…+n m总分支数e=n-1= n0+n1+n2+…+n m-1=m×n m+(m-1)×n m-1+…+2×n2+n1则有 n 0=∑=+-mi i n i 21))1((6.试分别找出满足以下条件的所有二叉树:(1) 二叉树的前序序列与中序序列相同; (2) 二叉树的中序序列与后序序列相同; (3) 二叉树的前序序列与后序序列相同。
[解答](1) 二叉树的前序序列与中序序列相同:空树或缺左子树的单支树;(2) 二叉树的中序序列与后序序列相同:空树或缺右子树的单支树; (3) 二叉树的前序序列与后序序列相同:空树或只有根结点的二叉树。
7.填空题(1)对于一棵具有n 个结点的树,该树中所有结点的度数之和为 n-1 。
数据结构树和二叉树习题及答案
数据结构树和二叉树习题及答案集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#习题六树和二叉树一、单项选择题1.以下说法错误的是 ( )A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继C.树形结构可以表达(组织)更复杂的数据D.树(及一切树形结构)是一种"分支层次"结构E.任何只含一个结点的集合是一棵树2.下列说法中正确的是 ( )A.任何一棵二叉树中至少有一个结点的度为2B.任何一棵二叉树中每个结点的度都为2C.任何一棵二叉树中的度肯定等于2D.任何一棵二叉树中的度可以小于23.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储C.将树、森林转换成二叉树D.体现一种技巧,没有什么实际意义4.树最适合用来表示 ( )A.有序数据元素 B.无序数据元素C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C.15 D.不确定6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。
与森林F对应的二叉树根结点的右子树上的结点个数是()。
A.M1 B.M1+M2 C.M3 D.M2+M37.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A. 250 B. 500 C.254 D.505 E.以上答案都不对8. 设给定权值总数有n 个,其哈夫曼树的结点总数为( )A.不确定 B.2n C.2n+1 D.2n-19.二叉树的第I层上最多含有结点数为()A.2I B. 2I-1-1 C. 2I-1 D.2I -110.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点A.2h B.2h-1 C.2h+1 D.h+111. 利用二叉链表存储树,则根结点的右指针是()。
树、二叉树、满二叉树、完全二叉树概念分清
树、⼆叉树、满⼆叉树、完全⼆叉树概念分清⾃由树⾃由树是⼀个连通的,⽆回路的⽆向图。
令G=(V,E)为⼀个⽆向图。
下⾯的表述是等价的。
1) G是⾃由树。
2) G中任意两个顶点由唯⼀⼀条简单路径得到。
3) G是连通的,但从E中去掉任何边后得到的图都是⾮连通的。
4) G是⽆回路的,且|E|=|V|-1。
5) G是连通的,且|E|=|V|-1。
6) G是⽆回路的,但添加任何边到E中得到的图包含回路。
⼆叉树在计算机科学中,⼆叉树是每个节点最多有两个⼦树的树结构。
通常⼦树被称作“左⼦树”(left subtree)和“右⼦树”(right subtree)。
⼆叉树的每个结点⾄多只有⼆棵⼦树(不存在度⼤于2的结点),⼆叉树的⼦树有左右之分,次序不能颠倒。
⼆叉树的第i层⾄多有2^(i-1)个结点;深度为k的⼆叉树⾄多有2^k-1个结点;(等⽐数列1+2+4+…+2^(k-1) = 2^k-1)。
对任何⼀棵⼆叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。
树和⼆叉树的三个主要差别:1) 树的结点个数⾄少为1,⽽⼆叉树的结点个数可以为0;2) 树中结点的最⼤度数没有限制,⽽⼆叉树结点的最⼤度数为2;3) 树的结点⽆左、右之分,⽽⼆叉树的结点有左、右之分。
满⼆叉树⼀棵深度为k,且有2^k-1个节点的树是满⼆叉树。
另⼀种定义:除了叶结点外每⼀个结点都有左右⼦叶且叶⼦结点都处在最底层的⼆叉树。
这两种定义是等价的。
从树的外形来看,满⼆叉树是严格三⾓形的,⼤家记住下⾯的图,它就是满⼆叉树的标准形态:所有内部节点都有两个⼦节点,最底⼀层是叶⼦节点。
性质:1) 如果⼀颗树深度为h,最⼤层数为k,且深度与最⼤层数相同,即k=h;2) 它的叶⼦数是: 2^(h-1)3) 第k层的结点数是: 2^(k-1)4) 总结点数是: 2^k-1 (2的k次⽅减⼀)5) 总节点数⼀定是奇数。
6) 树⾼:h=log2(n+1)。
树、二叉树、查找算法总结
树、⼆叉树、查找算法总结树的定义形式化定义树:T={D,R }。
D是包含n个结点的有限集合(n≥0)。
当n=0时为空树,否则关系R满⾜以下条件:l 有且仅有⼀个结点d0∈D,它对于关系R来说没有前驱结点,结点d0称作树的根结点。
l 除根结点外,每个结点有且仅有⼀个前驱结点。
l D中每个结点可以有零个或多个后继结点。
递归定义树是由n(n≥0)个结点组成的有限集合(记为T)。
其中:l 如果n=0,它是⼀棵空树,这是树的特例;l 如果n>0,这n个结点中存在⼀个唯⼀结点作为树的根结点(root),其余结点可分为m (m≥0)个互不相交的有限⼦集T1、T2、…、Tm,⽽每个⼦集本⾝⼜是⼀棵树,称为根结点root的⼦树。
ð 树中所有结点构成⼀种层次关系!树的基本术语度结点的度:⼀个结点的⼦树的个数树的度:各节点的度的最⼤值。
通常将度为m的树成为m次树或m叉树结点分⽀结点:度不为0的结点(也称⾮终端结点)度为1的结点成为单分⽀结点,度为2的结点称为双分⽀结点叶结点:度为0的结点路径与路径长度路径:两个结点di和dj的结点序列(di,di1,di2,…,dj)。
其中<dx,dy>是分⽀。
路径长度:等于路径所通过的结点数⽬减1(即路径上的分⽀数⽬)结点的层次和树⾼度层次:根结点层次为1,它的孩⼦结点层次为2。
以此类推。
树的⾼度(深度):结点中的最⼤层次;有序树和⽆序树有序树:若树中各结点的⼦树是按照⼀定的次序从左向右安排的,且相对次序是不能随意变换的⽆序树:和上⾯相反森林只要把树的根结点删去就成了森林。
反之,只要给n棵独⽴的树加上⼀个结点,并把这n棵树作为该结点的⼦树,则森林就变成了⼀颗树。
树的性质性质1:树中的结点数等于所有结点的度数之和加1。
证明:树的每个分⽀记为⼀个度,度数和=分⽀和,⽽再给根节点加个分⽀性质2:度为m的树中第i层上⾄多有mi-1个结点(i≥1)。
性质3 ⾼度为h的m次树⾄多有个结点。
树和二叉树(4N皇后(回溯法))
Backtracking
回溯 N皇后问题 跳马问题 迷宫问题 图的着色问题 0-1背包问题 装载问题 批处理作业调度 填数问题 组合输出问题 算24点问题 ACM应用
学习要点
掌握回溯的概念 掌握经典问题的回溯解决方法 掌握回溯与其它方法的异同
回溯法
有许多问题,当需要找出它的解集或者要求回答什么 解是满足某些约束条件的最佳解时,往往要使用回溯 法。 ► 回溯法的基本做法是搜索,或是一种组织得井井有条 的,能避免不必要搜索的穷举式搜索法。这种方法适 用于解一些组合数相当大的问题。 ► 回溯法在问题的解空间树中,按深度优先策略,从根 结点出发搜索解空间树。算法搜索至解空间树的任意 一点时,先判断该结点是否包含问题的解。如果肯定 不包含,则跳过对该结点为根的子树的搜索,逐层向 其祖先结点回溯;否则,进入该子树,继续按深度优 先策略搜索。
N皇后问题
递归写法: procedure try(k:byte); var i:byte; begin for i:=1 to n do if place(k) then begin x[k]:=i; if k=n then print else try(k+1); end;
分析:状态恢复(回溯)在什 么地方实现?
x
path:array[1..m] of integer; 其中,path[i]:表示第i个节点所走的方向
方向t,下一步的位置就是 (x+dx[t], y+dy[t])。
跳马问题
约束条件:
不越界: (x + dx[i] <= n) and (y + dy[i] > 0) and (y + dy[i] <= n)
x[3,1,4,2]
(山东科技大学)PTA数据结构答案与解析-
2-6
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能 得到的出栈序列是? (2分)
1. b c a e f d 2. c b d a e f 3. d c e b f a 4. a f e d c b
B代表分支数,n代表总结点数,将上边式子联立,然后带入题目中数据,可得
答案: D
2-9
若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?(3 分)
1. 这是一棵完全二叉树 2. 所有的奇数都在叶子结点上 3. 这是一棵二叉搜索树 4. 2是5的父结点 解析:根据前序,中序遍历可以建出图来,然后根据图来判断即可
答案: C
2-4
设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。若每个元素出栈后立即进入队列Q, 且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是: (2分)
1. 1 2. 2 3. 3 4. 4
解析: 模拟即可 答案: C
2-5
假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出, 堆栈大小至少为: (2分)
1-3 若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 (2分) 解析:2一定先与1出栈的 答案: T
2.单选题
2-1 给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p1, p2, ⋯, pn }。如果p2=n,则存在多少种不同的出栈序 列?(2分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业-树和二叉树
树
(树根结点的高度为1)
一、选择题
3.以下说法错误的是( )。
A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达
B.在三叉链表上,二叉树的求双亲操作很容易实现
C.在二叉链表上,求根以及求左、右孩子等操作很容易实现
D.在二叉链表上,求双亲操作的时间性能很好4.以下说法错误的是( )。
A.一般在哈夫曼树中,权值越大的叶子离根结点越近
B.哈夫曼树中没有度数为1的分支结点C.若初始森林中共有n棵二叉树,最终求得的哈夫曼树共有2n-1个结点
D.若初始森林中共有n棵二叉树,
进行2n-1次合并后才能剩下一棵最终的哈夫曼树
5.深度为6的二叉树最多有( )个结点。
A.64 B.63 C.32 D.31
6.将含有41个结点的完全二叉树从根结点开始编号,根为1号,
后面按从上到下、从左到右的顺序对结点编号,那么编号为21的双亲结点编号为( )。
A.10B.11 C.41 D.20 7.设深度为k的二叉树上只有度为0和度为2的结点,
则这类二叉树上所含结点总数最少( )个。
A.k+l B.2k C.2k-1D.2k+1 8.下列说法中正确的是( )。
A.任何一棵二叉树中至少有一个结点的度为2
B.任何一棵二叉树中每个结点的度都为2 C.任何一棵二叉树中的每个结点的度肯定等于2
D.任何一棵二叉树中的每个结点的度都可以小于2
9.一棵二叉树满足下列条件:对任意结点,若存在左、右子树,
则其值都小于它的左子树上所有结点的值,
而大于右子树上所有结点的值。
现采用( )遍历方式就可以得到这棵二叉树所有结点的递减序列。
A.前序B.中序C.后序D.层次
10.如图6-1所示的二叉树的中序遍历序列是( )。
A.abcdgef B.dfebagc C.dbaefcg D.defbagc
11.已知某二叉树的后序遍历序列是deacb,中序遍历序列是deabc,
它的前序遍历序列是( )。
A.acbed B.baedc C.dceab D.cedba 12.某二叉树的前序遍历的结点访问顺序是abdgcefh,
中序遍历的结点访问顺序是dgbaechf,
则其后序遍历的结点访问顺序是( )。
A.bdgcefha B.gdbecfha C.bdgechfa D.gdbehfca
13.在图6-2中的二叉树中,( c )不是完全二叉树。
14.树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据
D.元素之间无联系的数据
15.哈夫曼树的带权路径长度是( )。
A.所有结点权值之和
B.所有叶结点带权路径长度之和
C.带权结点的值
D.除根以外所有结点权值之和
16.设有一棵22个结点的完全二叉树,
那么整棵二叉树有( )个度为0的结点。
A.6 B.7 C.8 D.11 17.已知完全二叉树有26个结点,则整棵二叉树有( )个度为1的结点。
A.0 B.1 C.2 D.13
18.已知如图6-3所示的哈夫曼树,那么电文CDAA的编码是( )。
A.110100 B.11011100 C.010110111 D.11111100
19.在n个结点的完全二叉树中,对任一结点i(1≤i≤n),
i的左孩子可能是( )。
A.i/2 B.2i+1 C.2i D.都不是20.已给出图6-3所示的二叉树,
A,B,C,D的权值分别为7,5,2,4,
则该树的带权路径长度为( )。
A.46 B.36 C.35 D.都不是21.下列叙述中正确的是( )。
A.二叉树是度为2的有序树
B.二叉树中结点只有一个孩子时无左右之分
C.二叉树中必有度为2的结点
D.二叉树中结点最多有两棵子树,并且有左右之分
22.图6-4所示的几种结构中属于树形结构的是( b)。
二、判断题(标红色的是错误的)
2.树和二叉树之间最主要的差别是:
二叉树的结点的子树要区分为左右子树,
即使在结点只有一棵子树的情况下
也要明确指出该子树是左子树还是右子树。
3.若有一个结点是某二叉树子树的中序遍历序列中的最后一个结点,
则它必须是该子树的前序遍历序列中的最后一个结点。
4.二叉树具有两个子女的父结点,在中序遍历序列中,
它的后继结点最多只能有一个子女。
5.在二叉树中,具有一个子女的父结点,
在中序遍历中,它没有后继的子女结点。
6.已知二叉树的前序遍历和后序遍历序列不能惟一地确定这棵树。
三、填空题
1.树(及一切树形结构)是一种_分支层次_____结构。
在树中,
____根_____结点没有直接前驱。
对树上任一结点x来说,
x是它的任一子树的根结点惟一的___双亲
_____。
2.一棵树上的任何结点(不包括根本身)称为根的___子孙_______。
若B是A的子孙,则称A是B的_____祖先_____。
3.二叉树第i(i>0)层上至多有___2i-1_______个结点。
4.深度为k(k>0)的二叉树至多有_____2k-1_____个结点。
5.对任何二叉树,若度为2的节点数为n2,则叶子数n0=__n2+1________。
6.满二叉树上各层的节点数已达到了二叉树可以容纳的___最大值______。
满二叉树也是___完全_______二叉树,但反之不然。
7.具有n个结点的完全二叉树的深度为___log2n 取整+1_______。
8.二叉树通常有______顺序_______存储结构和____链式______存储结构两类存储结构。
9.每个二叉链表还必须有一个指向_根_______结点的指针,
该指针具有标识二叉链表的作用。
10.对二叉链表的访问只能从_____根______指针开始。
11.二叉树有不同的链式存储结构,其中最常用的是___二叉链表_______
与_三叉链表_________。
12.具有100个结点的完全二叉树的深度是
__7_________。
13.在_____先序_____遍历二叉树的序列中,任何结点的子树上的
所有结点都是直接跟在该结点之后。
14.若一棵二叉树的叶子数为n,
则该二叉树中左、右子树皆非空的结点个数为___n-1_______。
15.一棵树的形状如图6-5所示,
它的根结点是__A_______,叶结点是__E,J,K,G,L,O,P,Q,R,N,I________,
结点H的度是___3______,这棵树的度是
___4_____,
这棵树的深度是___5______,结点F的儿子结点是___J,K____,
结点G的父结点是___C______。
18.含有2n个结点的二叉树高度至少是
_n+1__________,
至多是__2n _______(仅含根结点的二叉树高度
为1)。
四、应用题
1.分别写出图6-7所示二叉树的前序、中序和后序序列。
答:前序:ABCDEF、中序:CBEFDA和后序:CFEDBA
2.已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,试画出这棵二叉树,并写出其前序遍历序列。
答:前序遍历序列:ABCDEFGH
3.设某密码电文由8个字母组成,a,b,c,d,e,f,g,h 每个字母在电文中的出现频率分别是
7,19,2,6,32,3,21,10,
试为这8个字母设计相应的哈夫曼编码。
答:略.
8.对于一个关键字序列10, 18, 3, 8, 12, 2, 7, 3,生成一个二叉排序树,并写出中序遍历该二叉排序树的结果。
答:略.。