树及二叉树的概念习题
树和二叉树习题集与答案解析
一、填空题1. 不相交的树的聚集称之为森林。
2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。
3. 深度为k的完全二叉树至少有2 k-1个结点。
至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。
4. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为n 2,则有n0= 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)次序的遍历实现编号。
第五章树与二叉树必会题
第五章树和二叉树必会题一.填空1. 树结构体现了数据元素间一对多的关系。
在树中除根结点外,其余结点有且仅有一个双亲;除叶子结点外,其余结点可能有多个孩子。
2. 树的遍历方法主要有先序遍历、中序遍历和后序遍历。
3. 树中某结点在第k层,则该结点的子树的根在k+1层。
4. 二叉树的第i层上至多有2i-1个结点。
5. 深度为h的二叉树至多有2h-1个结点。
6. 完全二叉树中结点间编号的关系:若某结点的编号为i,若有双亲,则其双亲的编号为i/2;若有左孩子,则其左孩子的编号为i*2;若有右孩子,则其右孩子的编号为i*2+1。
7. 把一棵树转换为二叉树后,这棵二叉树的形态是唯一的。
8. 完全二叉树就是在同高度的满二叉树的最大层上从右向左连续删除若干结点所构成。
9. 任意一棵哈夫曼树的带权路径长度都等于其所有非叶子结点的权值之和。
10. 树中的结点数比边数多1。
11. 二叉树可以采用顺序存储结构,也可以采用链式存储结构。
12. 哈夫曼树是带权路径长度最短的树。
13. 已知二叉树先根遍历的序列为“CDHAFEGB”, 中根遍历的序列为“HDFAECBG”, 则后根遍历的序列为“_HFEADBGC_”。
14. 已知完全二叉树有1024个结点, 则该二叉树的深度为__11___。
15. 已知一颗哈夫曼树有4个叶子结点,则该树一共有7个结点。
16. 设一棵树用括号表示法记作A(C,D(E,F,G),H(I,J)),则该树有9个结点,树的深度为3,树的度为3。
17. 若用二叉链表存储二叉树,则有n个结点的二叉树共有2n个指针域,其中有n-1个指针域非空,n+1个指针域为空。
18. 设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为7、19、2、6、32、3、21、10,根据这些频率作为权值构造哈夫曼树,则这棵哈夫曼树的高度为6。
二.判断题1. 二叉树的后序遍历序列中,任意一个结点均处在其孩子结点的后面。
(√)2. 二叉树是度为2的有序树。
数据结构树和二叉树习题
数据结构树和二叉树习题一、树的基本概念1.请简要描述树的基本概念及其特点。
答:树是由n(n≥0)个节点组成的有限集合。
其中:-若n=0,则为空树。
-若n>0,则树有且仅有一个称为根的节点,其他节点可以分为多个互不相交的有限集合,每个集合本身又是一棵树,称之为根的子树。
树的特点包括:-每个节点存放的数据可以是同种或不同种的数据类型。
-每个节点最多有一个父节点和多个子节点。
2.请列举树的应用场景。
答:树的应用场景包括但不限于以下几个方面:-文件系统:操作系统中的文件系统通常使用树来组织文件和目录。
-数据库:数据库中的索引通常使用树来存储和组织数据。
-编译原理:编译器使用语法树来解析源代码。
-社交网络:社交网络中的关注和粉丝关系可以表示为树。
二、二叉树3.请定义二叉树。
答:二叉树是一种特殊的树结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。
4.请画出以下二叉树的结构图:A/\BC/\/\DEFG答:以下是该二叉树的结构图:A/\BC/\/\DEFG5.请写出以下二叉树的前序遍历、中序遍历和后序遍历结果:/\23/\45答:-前序遍历结果:1,2,4,5,3-中序遍历结果:4,2,5,1,3-后序遍历结果:4,5,2,3,1三、二叉树的操作6.请实现二叉树的插入操作。
答:以下是二叉树的插入操作的示例代码:```class Node:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonedef insert(root, value):if root is None:root = Node(value)else:if value < root.value:if root.left is None:root.left = Node(value)else:insert(root.left, value)else:if root.right is None:root.right = Node(value)else:insert(root.right, value)```7.请实现二叉树的查找操作。
树和二叉树习题及答案
一、填空题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-12i-1二、单选题1. 具有10个叶结点的二叉树中有 (B) 个度为2的结点。
(A)8 (B)9 (C)10 (D)112.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。
树和二叉树习题
第六章树和二叉树知识点1 树的基本概念选择4. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为(D)A.5 B.6 C.7 D.87. 树是结点的有限集合,它(C (1))根结点,记为T。
其余结点分成为m(m>0)个(A(2))的集合T1,T2,…,Tm,每个集合又都是树,此时结点T称为Ti的父结点,Ti称为T 的子结点(1≤i≤m)。
一个结点的子结点个数称为该结点的(C(3) )。
供选择的答案:(1)(4) A. 有0个或1个 B. 有0个或多个 C. 有且只有一个 D. 有1个或1个以上(2) A. 互不相交 B.允许相交 C.允许叶结点相交 D.允许树枝结点相交(3) A. 权 B.维数 C.次数 D.序判断29.树形结构中元素之间存在一个对多个的关系。
√填空题7.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有___12 __个叶子结点。
24.如果结点A有 3个兄弟,而且B是A的双亲,则B的度是__4___。
32.一棵树T中,包括一个度为1的结点,两个度为2的结点,三个度为3的结点,四个度为4的结点和若干叶子结点,则T的叶结点数为___21__。
应用题知识点2 二叉树的基本概念和性质选择5. 在下述结论中,正确的是( .D )①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①②③ B.②③④ C.②④ D.①④8.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(.B)A.9 B.11 C.15 D.不确定11.具有10个叶结点的二叉树中有(.B )个度为2的结点,A.8 B.9 C.10 D.ll12.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(E)A. 250 B. 500 C.254 D.505 E.以上答案都不对16. 有关二叉树下列说法正确的是(B )A.二叉树的度为2 B.一棵二叉树的度可以小于2 C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为217.二叉树的第I层上最多含有结点数为(C )A.2I B. 2I-1-1 C. 2I-1 D.2I -118. 一个具有1025个结点的二叉树的高h为(C )A.11 B.10 C.11至1025之间 D.10至1024之间19.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有(B )结点A.2h B.2h-1 C.2h+1 D.h+120.对于有n 个结点的二叉树, 其高度为( D )A.nlog2n B.log2n C.⎣log2n⎦|+1 D.不确定21. 一棵具有 n个结点的完全二叉树的树高度(深度)是(A )A.⎣logn⎦+1 B.logn+1 C.⎣logn⎦ D.logn-122.深度为h的满m叉树的第k层有(A)个结点。
数据结构树和二叉树习题(有答案)
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 )。
数据结构习题第六章树和二叉树
第六章 树和二叉树一、选择题1.已知一算术表达式的中缀形式为 A+B*C-D/E ,后缀形式为ABC*+DE/-,其前缀形式为( )A .-A+B*C/DE B. -A+B*CD/E C .-+*ABC/DE D.-+A*BC/DE【北京航空航天大学 1999 一、3 (2分)】2.算术表达式a+b*(c+d/e )转为后缀表达式后为( )【中山大学 1999 一、5】A .ab+cde/*B .abcde/+*+C .abcde/*++D 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-G 4. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T 中的叶子数为( )A .5B .6C .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 )。
数据结构习题与答案--树和二叉树
第六章树和二叉树一、判断题( t )01、若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
( f )02、二叉树中每个结点的两棵子树的高度差等于1。
(t )03、二叉树中每个结点的两棵子树是有序的。
( f )04、二叉树中每个结点有两棵非空子树或有两棵空子树。
( f )05、二叉树中所有结点个数是2k-1-1,其中k是树的深度。
(f )06、二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
( f )07、对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
(t )08、用二叉链表法存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(t)09、具有12个结点的完全二叉树有5个度为2的结点。
( f )10、二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
( f )11、二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索。
( t )12、二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。
二、填空题01、由3个结点所构成的二叉树有_5_种形态。
02、一棵深度为6的满二叉树有____个分支结点和____个叶子。
03、一棵具有257个结点的完全二叉树,它的深度为____。
04、设一棵完全二叉树有700个结点,则共有____个叶子结点。
05、设一棵完全二叉树具有1000个结点,则此完全二叉树有____个叶子结点,有____个度为2的结点,有____个结点只有非空左子树,有____个结点只有非空右子树。
06、一棵含有n个结点的k叉树,可能达到的最大深度为____,最小深度为____。
07、二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。
因而二叉树的遍历次序有六种。
最常用的是三种:前序法(即按N L R次序),后序法(即按LRN次序)和中序法(也称对称序法,即按L N R次序)。
数据结构——树和二叉树练习
∑3
i =1
3பைடு நூலகம்
i −1
数 据 结 构 — 树 和 二 叉 树
C E
5.假定一棵树的广义表表示为 A(B(C,D(E,F,G),H(I,J))),则树中所含的结点数为 ________个,树的深度为________,树的度为 ________。
解释: 解释:
A
B D F G I
H J
数 据 结 构 — 树 和 二 叉 树
数 据 结 构 — 树 和 二 叉 树
解释:与二叉树类似,根据二叉树的性质3类推,三叉树 解释:与二叉树类似,根据二叉树的性质3类推,
n +1 =4 的最小深度为完全三叉树,所以最小深度为 log3 的最小深度为完全三叉树,
2.假定一棵三叉树的结点个数为50,则它的最 小深度为________,最大深度为_______。
数 据 结 构 — 树 和 二 叉 树
4.一棵深度为5的满二叉树中的结点数为 ________个,一棵深度为3的满三叉树中的结 点数为________个。
解释:根据二叉树的性质3,深度为5的二叉树的结点个数 解释:根据二叉树的性质3 深度为5 为25-1=31,同理深度为3的满三叉树的结点总数为 1=31,同理深度为3
数 据 结 构 — 树 和 二 叉 树
9.现用七个字符a,b,c,d,e,f,g进行信息传输,使用时出 现的概率分别为6%,14%,16%,4%,12%,20%,28%,构造 一棵哈夫曼树,对它们进行编码,并计算出带权路 径长度WPL和平均编码长度。
6 解释: 解释: 14 42 16 4 12 20 6 28 4 WPL=(6+4)*4+(12+14+16)*3+(20+28)*2=588 Lavg=588/100=5.88 20 22 28 30 58 100
《数据结构》习题集:第6章 树和二叉树
第6章树和二叉树一、选择题1.有一“遗传”关系,设x是y的父亲,则x可以把它的属性遗传给y,表示该遗传关系最适合的数据结构是( D )A、向量B、树C、图D、二叉树2.树最适合用来表示( B )A、有序数据元素B、元素之间具有分支层次关系的数据C、无序数据元素D、元素之间无联系的数据3.树B 的层号表示为1a,2b,3d,3e,2c,对应于下面选择的( C )A、1a(2b(3d,3e),2c)B、a(b(D,e),c)C、a(b(d,e),c)D、a(b,d(e),c)4.对二叉树的结点从1 开始连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用( B )次序的遍历实现二叉树的结点编号。
A、先序B、中序C、后序D、从根开始按层次遍历5.按照二叉树的定义,具有3 个结点的二叉树有(C )种。
A、3B、4C、5D、66.在一棵有n个结点的二叉树中,若度为2的结点数为n2,度为1的结点数为n1,度为0的结点数为n0,则树的最大高度为(),其叶结点数为();树的最小高度为(),其叶结点数为();若采用链表存储结构,则有()个空链域。
log+1 C、log2n D、nA、n/2B、⎣⎦n2E、n0+n1+n2F、n1+n2G、n2+1H、1I、n+1 J、n1K、n2L、n1+17.对一棵满二叉树,m 个树叶,n 个结点,深度为h,则( D )A、n=m+hB、h+m=2nC、m=h-1D、n=2h-18.设高度为h 的二叉树中只有度为0 和度为2 的结点,则此类二叉树中所包含的结点数至少为( A ),至多为(D )。
A、2hB、2h-1C、2h-1D、2h-19.在一棵二叉树上第5 层的结点数最多为(B)(假设根结点的层数为1)A、8B、16C、15D、3210.深度为5 的二叉树至多有( C )个结点。
A、16B、32C、31D、1011.一棵有124 个叶结点的完全二叉树,最多有(B )个结点A、247B、248C、249D、25012.含有129 个叶子结点的完全二叉树,最少有( B )个结点A、254B、255C、256D、25713.假定有一棵二叉树,双分支结点数为15,单分支结点数为30,则叶子结点数为( D )个。
树和二叉树概念、实现、考研习题
目录树和二叉树 (1)1.二叉树 (1)1.1二叉树的存储结构 (1)1.2习题 (1)2.二叉树的遍历和线索二叉树 (2)2.1二叉树的遍历 (2)2.2线索二叉树 (5)2.3习题 (8)3.树、森林 (19)3.1树的存储结构 (19)3.2习题 (19)4.树与二叉树的应用 (20)4.1二叉排序树 (21)4.2习题 (23)5.归纳总结 (26)树和二叉树1.二叉树1.1二叉树的存储结构1.1.1二叉树的顺序存储结构二叉树的顺序存储结构就是用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储在某个数组下标为i-1的分量中,然后通过一些方法确定结点在逻辑上的父子和兄弟关系。
根据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间地逻辑关系,这样既能最大可能地节省存储空间,又可以利用数组元素地下标值确定结点在二叉树中地位置,以及结点之间地关系。
但是对于一般地二叉树,为了让数组下标能反映二叉树中结点之间的逻辑关系,只能添加一些并不存在的空结点让其每个结点与完全二叉树上的结点相对照,再存储到一维数组的相应分量中。
然而,在最坏的情况下,一个高度为H且只有H个结点的单支树却需要占据接近2H-1个存储单元。
typedef ElemTypeSqTree[MaxSize];1.1.2二叉树的链式存储结构由于顺序存储对空间利用率较低,因此,一般二叉树都采用链式存储结构。
链式结构是指用一个链表来存储一颗二叉树,二叉树中每一个结点用链表的一个链结点来存储。
在二叉树中,结点结构通常包括若干数据域及若干个指针域。
二叉链表至少包含3个域:数据域data,左指针域lchild和右指针域rchild。
二叉树的链式存储结构描述如下:typedefstruct BiTNode {ElemType data; //数据域struct BiTNode *lchild, *rchild; //左、右孩子指针}BiTNode,*BiTree;容易验证,在含有n个结点的二叉链表中含有n+1个空链域。
第6章 树和二叉树(习题)
第6章树和二叉树习题一、选择题1、如果T2是由树T转换而来的二叉树,那么T中结点的后序就是T2中结点的()。
A.先序 B.中序 C.后序 D.层次序2、设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为()A.5 B.6 C.7 D.83、由3 个结点可以构造出多少种不同的二叉树?()A.2 B.3 C.4 D.54、二叉树在线索后,仍不能有效求解的问题是()。
A.前(先)序线索二叉树中求前(先)序后继 B.中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱 D.后序线索二叉树中求后序后继5、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()。
A.9 B.11 C.15 D.不确定6、设F是一个森林,B是由F变换得的二叉树。
若F中有n个非终端结点,则B中右指针域为空的结点有()个。
A. n-1 B.n C. n+1 D. n+27、设给定权值总数有n 个,其哈夫曼树的结点总数为( ) 。
A.不确定 B.2n C.2n+1 D.2n-18、()的遍历仍需要栈的支持.A.前序线索树 B.中序线索树 C.后序线索树9、在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序()A.都不相同B.完全相同 C.先序和中序相同,而与后序不同D.中序和后序相同,而与先序不同10、一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是()A.CABDEFG B.ABCDEFG C.DACEFBG D.ADCFEG二、填空题1、已知二叉树有50个叶子结点,则该二叉树的总结点数至少是______。
2、树在计算机内的表示方式有,,。
3、在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0 =______。
4、如果结点A有 3个兄弟,而且B是A的双亲,则B的度是______。
5、设一棵完全二叉树叶子结点数为k,最后一层结点数>2,则该二叉树的高度为______。
第6章 树和二叉树-习题-答案
第6章树和二叉树习题答案1.从概念上讲,树,森林和二叉树是三种不同的数据结构,将树,森林转化为二叉树的基本目的是什么,并指出树和二叉树的主要区别。
答:树的孩子兄弟链表表示法和二叉树二叉链表表示法,本质是一样的,只是解释不同,也就是说树(树是森林的特例,即森林中只有一棵树的特殊情况)可用二叉树唯一表示,并可使用二叉树的一些算法去解决树和森林中的问题。
树和二叉树的区别有三:一是二叉树的度至多为2,树无此限制;二是二叉树有左右子树之分,即使在只有一个分枝的情况下,也必须指出是左子树还是右子树,树无此限制;三是二叉树允许为空,树一般不允许为空(个别书上允许为空)。
2.请分析线性表、树、广义表的主要结构特点,以及相互的差异与关联。
答:线性表属于约束最强的线性结构,在非空线性表中,只有一个“第一个”元素,也只有一个“最后一个”元素;除第一个元素外,每个元素有唯一前驱;除最后一个元素外,每个元素有唯一后继。
树是一种层次结构,有且只有一个根结点,每个结点可以有多个子女,但只有一个双亲(根无双亲),从这个意义上说存在一(双亲)对多(子女)的关系。
广义表中的元素既可以是原子,也可以是子表,子表可以为它表共享。
从表中套表意义上说,广义表也是层次结构。
从逻辑上讲,树和广义表均属非线性结构。
但在以下意义上,又蜕变为线性结构。
如度为1的树,以及广义表中的元素都是原子时。
另外,广义表从元素之间的关系可看成前驱和后继,也符合线性表,但这时元素有原子,也有子表,即元素并不属于同一数据对象。
3.在二叉树的Llink-Rlink存储表示中,引入“线索”的好处是什么?答:在二叉链表表示的二叉树中,引入线索的目的主要是便于查找结点的前驱和后继。
因为若知道各结点的后继,二叉树的遍历就变成非常简单。
二叉链表结构查结点的左右子女非常方便,但其前驱和后继是在遍历中形成的。
为了将非线性结构二叉树的结点排成线性序列,利用结点的空链域,左链为空时用作前驱指针,右链为空时作为后继指针。
习题5 树和二叉树
VS
详细描述
后序遍历是一种按照左子树、右子树、根 节点的顺序进行的遍历方式。在遍历过程 中,首先递归地遍历左子树,然后递归地 遍历右子树,最后访问根节点。后序遍历 可以用于二叉树的构造、查找等操作。
04
CATALOGUE
树和二叉树的算法应用
查找最大/最小节点
查找最大节点
从根节点开始,沿着左子树向下遍历 ,找到最左边的叶子节点,即为最大 节点。
树的表示方法
可以用图形表示法、嵌套集合表示 法、递归定义表示法等来表示树。
树的性质
树是一种无环的有向图,其任意两 个顶点之间最多有一条路径,且每 个顶点都有唯一的父节点(除了根 节点)。
树的度数和类型
树的度数
树中节点的最大度数称为树的度 数,树的度数等于2时,称为二叉 树。
树的类型
根据节点的度数,可以将树分为 二叉树、三叉树、四叉树等。
插入节点
在叶子节点处插入
找到目标位置的叶子节点,将新节点 插入到该位置。
在非叶子节点处插入
找到目标位置的非叶子节点,递归地 在左子树或右子树中找到合适的位置 插入新节点。
删除节点
删除叶子节点
直接从该节点的父节点中移除该叶子节点。
删除非叶子节点
找到该节点的左子树或右子树中第一个叶子 的后继(或前驱)节点,将其替换要删除的 节点,然后删除后继(或前驱)节点。
红黑树在插入和删除节点时能够保持 O(log n)的时间复杂度,适用于需要 快速查找、插入和删除数据的应用场 景。
红黑树的节点分为红色和黑色,满足 一系列性质,如每个节点要么是红色 ,要么是黑色,根节点为黑色等。
THANKS
感谢观看
中序遍历
总结词
先遍历左子树,然后访问根节点,最后遍历右子树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一讲树及二叉树的概念【内容索引】一、引言 (2)二、树的概念 (2)1. 树的定义 (2)2. 树的基本术语 (3)三、二叉树 (4)1. 二叉树的定义 (4)2. 二叉树的性质 (4)3. 二叉树的存储结构 (6)4. 二叉树的遍历 (9)四、二叉树的运算 (10)1. 二叉树的遍历运算 (10)实例一 (11)2. 二叉链表的生成算法 (11)实例二 (11)实例三 (13)3. 按层次遍历二叉树 (14)实例四 (14)一、引言树是一种重要的非线性数据结构,在树这种数据结构中,所有数据元素之间的关系具有明显的层次特性。
例:1. 网站设计中的导航结构2. 操作系统中的目录结构3.本文的目录结构。
在图1.1中,用图形表示树这种数据结构时,很像自然界中的树,只不过是一棵到长的树,因此,这种数据结构就用树来命名。
图1.1在解决实际问题中,我们常常会用到树这种数据结构。
例:请你设计一个电子词典,用来查找单词。
我们需要考虑两个问题,一是要提高查找和定位的速度;二是要尽量节省存储的空间。
显然用线性数据结构不是好的选择,于是就有人提出了用树来解决问题。
图1.2就是用树构造的单词查找树,例如要查找ASCII,我们可以从根开始,查找到A,然后是S,接下去是C,这样就很快查找到整个单词。
图1.2二、树的概念1.树的定义树(Tree)是由一个或多个结点组成的有限集合T,且满足:①有且仅有一个称为根的结点;②其余结点分成n(n≥0)个互不相交的集合T1, T2, …Tn,其中每个集合都是一棵树,并且称Ti (1≤i≤n) 为根的子树。
显然树是一个递归定义。
图1.3是一棵具有13个结点的树,其中A结点是树的根,其余12个结点划分为3个互不相交的子集:T1 = { B, E ,F, K, L }T2 = {C ,G }T3 = { D, H, I, J, M }T1, T2, T3 均是根A的子树,其本身也都是树。
我们还可以继续划分,集合{E, K L}是B的子树,以此类推。
所以我们除了用图来表示树的结构,还可用广义表来表示树,例如,图1.3的树用广义表表示如下:T=(A(B(E(K,L),F)),C(G),D(H(M),I,J)))图1.3 树的图形表示2.树的基本术语因为树的结构比其他线性结构更复杂,所以我们需要用一些术语来描述结点和结点之间的关系。
①根结点每一棵树都有一个根结点,如图1.3中A结点。
根据树的定义,树中的每一个结点都可以看成是它的一个子树的根。
如结点B, C, D分别是子树T1, T2, T3的根结点。
但是A结点与其它结点不同的是,只有后继结点而没有前趋结点,所以A被称为树的根。
②结点的度和树的度一个结点的子树的个数称为是该结点的度。
如根结点A有3个子树,则A结点的度为3;而C结点只有1个子树,则C结点的度为1。
树中度数最大的结点的度为树的度。
树T的度是3。
③分支结点和叶结点度为0的结点称为叶结点或端结点。
如K, L, F, G, M, I, J, 这些结点都是树的叶结点。
度大于0的结点称作分支结点。
④子结点和父结点每个结点的子树的根结点称为该结点的儿子(子结点),而该结点称为子结点的父亲(父结点)。
如A结点为B结点的父结点,B为A的子结点。
树中的一条边连接两个结点,这两个结点互为父子关系。
有同一个父结点的所有子结点称为兄弟。
如B, C, D就互为兄弟。
某结点到整棵树的根结点的路径上的所有结点叫作该结点的祖先。
如结点K到根结点A的路径上的所有结点E, B, A,都是结点K的祖先。
⑤结点的层数和树的深度树既是一种递归结构,也是一种层次结构,树中的每个结点都处在一定的层数上。
结点的层数从树根开始定义,设根结点的层号为1,其儿子结点的层号为2,以此类推;若某结点在第L 层,则该结点的儿子处于第L+1层。
树中结点最大的层号为树的深度。
树T 的深度为4。
⑥ 有序树和无序树若结点的子树有次序排列,且先后次序不能互换,这样的树称为有序树,反之为无序树。
⑦ 森林森林是若干棵互不相交的树的集合。
若删除图1.3中树T 的根结点A ,就得到一个森林{T1, T2, T3}。
三、二叉树1. 二叉树的定义如果树中每个结点的子树个数小于或等于2的树,并且各子树的次序不能互换,有左、右子树之分,这样的树称为二叉树。
所以二叉树是一种度为2的有序树。
根据定义,二叉树共有5种不同的基本形态,如图1.4所示。
a. 空二叉树;b. 只有一个根结点的二叉树;c. 右子树为空的二叉树;d. 左子树为空的二叉树;e. 左、右子树非空的二叉树。
2. 二叉树的性质二叉树具有下列重要性质: 性质1在二叉树中,第i 层的结点总数不超过2i-1(i>=1);性质2 深度为k 的二叉树的结点总数不超过2k-1(k>=1)。
请看图1.5中的二叉树: 第1层 1个结点,20 第2层 2个结点,21 第3层 4个结点,22第I 层 2i-1个结点;那么对于深度为k 的二叉树所具有的结点总数为:a b c d e图1.4∑=--=++++=kikki12111222222如果一个深度为K的二叉树,具有2k-1个结点,则称该二叉树为满二叉树。
如图1.5是深度为4的满二叉树,它的结点总数是15。
满二叉树最底一层的各个结点的度数为0,而其余的结点的度数均为2。
图 1.5如果一棵深度为K二叉树,1至k-1层的结点都是满的,即满足2i-1,只有最下面的一层的结点数小于2i-1,并且最下面一层的结点都集中在该层最左边的若干位置,则此二叉树称为完全二叉树。
如图1.6所示。
图 1.6如果二叉树的中间有些结点不存在,如图1.7所示二叉树,称为不完全二叉树。
性质3 在任意一棵二叉树中,度为0的结点(叶结点)比度为2的结点多一个。
在二叉树中,如果其叶结点的个数为N0,其度数为2的结点总数为N2,则有:N0=N2+1。
例如:图1.5的树,n0=8, n2=7图1.7的树,n0=4, n2=3性质4 具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。
对于完全二叉树,还有如下性质:1)在完全二叉树中,深度K与结点总数N的关系为:K=[Log2N]+1,且有如下关系:2k-1<N<=2k-1。
2)有N个结点的完全二叉树的各结点如果用顺序方式表示,则对于任一结点I(1<=I<=N)有:(见图1.8)[log2n]如果I=1,则I为根,无父结点;如果I<>1,则父结点为[i/2]。
如果2*I>N,则I无左子树;如果2*I<=N,则I的左儿子的编号为2*I。
如果2*I+1>N,则I无右子树;如果2*I+1<=N,则I的右儿子的编号为2*I+1。
图 1.83.二叉树的存储结构二叉树的存储结构有两种形式:1)顺序存储方式;2)链表存储方式。
【顺序存储方式】对于满二叉树和完全二叉树,可以对每个结点进行连续编号,所以通常采用顺序存储的方式。
具体做法是:定义一个一维数组,把每个结点的编号作为数组的下标变量,将结点的值存放在数组中。
二叉树的各结点的编号从根结点开始,根结点的标号为1,然后,逐层由左向右进行连续编号,并将该结点的值存于对应编号为下标的一维数组中。
如图1.9所示。
数组123456下标F图 1.9如图1.10所示的不完全二叉树,也可以用顺序存储的形式。
将不完全二叉树缺掉的结点补齐,然后以满二叉树编号方式进行编号,以编号顺序将该树的各结点存放在一维数组中。
由此看出,6,7,8,9,12,13,14,15的单元里是没有存放数据的,而这样的不完全二叉树实际上只有7个结点,却要占用15个存储单元,不免浪费空间。
但是,在这种存储方式下,从一个结点的编号就可以推测其父结点,左右子结点的编号,据此,可以轻易画出二叉树。
例1:下面是一个利用完全二叉树的特性,用顺序表来存储的一棵二叉树,结点数据为字符型(结点层次号从小到大,同一层从左到右顺序存储,#表示空结点,@表示存储数据结束)。
现要求画出对应该存储结构的二叉树示意图。
根据二叉树的性质,先画出结点编号的完全二叉树的示意图,然后,用对应编号的字符替换,最后将空结点删除,即可得到最终结果。
如图1.11所示。
图 1.11二叉树的顺序存储结构也可以用邻接表表示,如图8的二叉树的邻接表可以用可以用三个一维数组表示,数组D存放结点数据,数组L、R分别表示每个结点的左指针和右指针。
如下表所示:【链表存储方式】用链接表存储二叉树,每个结点由三部分组成:数据域、左地址域、右地址域。
左指针、右指针分别指向该结点的左儿子和右儿子的地址域。
见图1.12。
图1.12二叉树的链表数据结构定义如下:type datatype=char;treetype=^nodenode=recorddata:datatype;left:treetype;right:treetype;end;每个结点的数据格式为:4.二叉树的遍历二叉树的遍历是根据一定的规律访问二叉树的每一个结点,所谓访问,可以是打印该结点的值,修改该结点的值,或将该结点做某些处理等。
根据根结点,左子树,右子树先后访问的不同顺序,可以有以下六种不同的遍历方式:①根,左,右;②左,根,右;③左,右,根;④根,右,左;⑤右,左,根;⑥右,根,左。
二叉树最常用的遍历运算是:①先序遍历,根,左,右;②中序遍历,左,根,右;③后序遍历,左,右,根三种。
1)先序遍历:先访问根结点,再先序遍历左子树,最后再先序遍历右子树。
例2:先序遍历图1.13的二叉树。
图1.13先访问整棵二叉树的根结点A,然后再先序遍历左子树T1;在访问T1时,也以先序遍历原则,先访问T1的根结点B,然后再先序遍历T1的左子树T11;在访问T11时,也以先序遍历原则,先访问T11的根结点D,然后再先序遍历T11的左子树。
由于此时T11的左子树只有H结点,所以访问H结点,T11的左子树先序遍历结束,根据先序遍历的原则,进行先序遍历T11的右子树。
由于T11的右子树只有I结点,故访问此结点后T11的右子树的先序遍历结束。
先序遍历完T11子树后,返回T1子树,先序遍历T1的右子树。
先序遍历完T1子树后,接着先序遍历根结点A的右子树T2。
先序遍历完T2后,该二叉树的所有结点都已经访问过,各结点被访问的顺序为:ABDHIECFG2)中序遍历:先中序遍历左子树,然后再访问根结点,最后再中序遍历右子树。
对图1.12的二叉树进行中序遍历,访问各个结点的顺序为:HDIBEAFCG3)后序遍历:先后序遍历左子树,然后再后序遍历右子树,最后再访问根结点。
对图1.12的二叉树进行后序遍历,访问各个结点的顺序为:HIDEBFGCA。