数据结构第四章树和二叉树习题

合集下载

树和二叉树练习题及解答_richard

树和二叉树练习题及解答_richard

树和二叉树练习题及解答_richard一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)(√ )1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。

(× )2.二叉树中每个结点的两棵子树的高度差等于1。

(√ )3.二叉树中每个结点的两棵子树是有序的。

(× )4.二叉树中每个结点有两棵非空子树或有两棵空子树。

(×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。

(应当是二叉排序树的特点)(× )6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。

(应2i-1)(× )7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。

(× )8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。

(应2i-1)(√ )9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。

(正确。

用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。

由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。

)即有后继链接的指针仅n-1个。

(√ )10. 〖01年计算机系研题〗具有12个结点的完全二叉树有5个度为2的结点。

最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有 5 种形态。

2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+n2= n0-1=31 个分支结点和 26-1 =32个叶子。

注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。

3.一棵具有257个结点的完全二叉树,它的深度为 9 。

数据结构习题集第4章(2014更正)

数据结构习题集第4章(2014更正)

第4章树一、单项选择题:1.如下图4-1所示的4棵二叉树中,不是完全二叉树。

A. B. C. D.图4-1 4棵二叉树2.二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法。

A.正确B.错误3.二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面,这种说法。

A.正确B.错误4.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法。

A.正确B.错误5.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为。

A.2hB.2h-1C.2h+1D.h+16.如果T2是由有序树T1转换而来的二叉树,那么T1中结点的先根遍历就是T2中结点的遍历。

A.先序B.中序C.后序D.层次序7.某二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树一定是。

A.空或只有一个结点B.完全二叉树C.二叉排序树D.高度等于其结点数8. 如下图4-2所示的T2是由森林T1转化而来的二叉树,那么森林T1有 个叶子结点。

A.4B.5C.6D.7图4-2 一棵二叉树9. 按照二叉树的定义,具有3个结点的二叉树有 种。

A.3 B.4 C.5 D.610. 在一非空二叉树的中序遍历序列中,根结点的右边 。

A. 只有右子树上的所有结点B.只有右子树上的部分结点C. 只有左子树上的部分结点D.只有左子树上的所有结点11. 任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序 。

A.不发生改变B.发生改变C.不能确定D.以上都不对12. 设n ,m 为一棵二叉树上的两个结点,在中序遍历时,n 在m 前的条件是 。

A.n 在m 右方B.n 是m 祖先C.n 在m 左方D.n 是m 子孙13. 线索二叉树是一种 结构。

A.逻辑B.逻辑和存储C.物理D.线性二、填空题:1. 有一棵树如下图4-3所示,回答下面的问题:(1)这棵树的根结点是 ;(2)这棵树的叶子结点是 ;(3)结点k3的度是;(4)这棵树的度为;(5)这棵树的深度是;(6)结点k3的孩子结点是;(7)结点k3的双亲结点是。

数据结构与算法 习题解答 第4章

数据结构与算法 习题解答 第4章

第 4 章 树结构1.选择题(1)C (2)C (3)B (4)B (5)B (6)C (7)C (8)D (9)A (10)D (11)D (12)B (13)B (14)D (15)B2.判断题(1)√(2)√ (3)Ⅹ (4)Ⅹ(5)√ (6)Ⅹ(7)√ (8)√(9)√(10)Ⅹ (11)Ⅹ(12)Ⅹ(13)√(14)Ⅹ(15)Ⅹ(16)Ⅹ(17)√(18)Ⅹ(19)Ⅹ(20)√3.简答题(1)一棵度为 2 的树与一棵二叉树有何区别?树与二叉树之间有何区别?【解答】①二叉树是有序树,度为 2 的树是无序树,二叉树的度不一定是 2。

②二叉树是有序树,每个结点最多有两棵子树,树是无序树,且每个结点可以有多棵子树。

A(2)对于图 4-37 所示二叉树,试给出: 1)它的顺序存储结构示意图;BC2)它的二叉链表存储结构示意图; 3)它的三叉链表存储结构示意图。

DEF【解答】 1)顺序存储结构示意图:AB CDEF ^ ^ ^ G^ ^ HGH(图 4-37)2)二叉链表存储结构示意图:3)三叉链表存储结构示意图:ABC^^D^E^ ^ F^G^^H^A^BC^^ D^E^^F^ G^^ H^(3)对于图 4-38 所示的树,试给出: 1)双亲数组表示法示意图; 2)孩子链表表示法示意图; 3)孩子兄弟链表表示法示意图。

ABCGFEDIHJKMN(图 4-38)【解答】 1)双亲数组表示法示意图:2)孩子链表表示法示意图:0 A -1 1 B0 2 C0 3 D2 4 E2 5F1 6 G1 7 H5 8I 2 9J 4 10 K 4 11 M 3 12 N 83)孩子兄弟链表表示法示意图:0A 1B 2C 3D 4E 5F 6G 7H 8I 9J 10 K 11 M 12 N12^56^348^11 ^ 910 ^7^12 ^ABC^^GFEDI^^ H^^J^ K^ ^ M^ ^ N^(4)画出图 4-39 所示的森林经转换后所对应的二叉树,并指出森林中满足什么条件的 结点在二叉树中是叶子。

树和二叉树习题集与答案解析

树和二叉树习题集与答案解析

一、填空题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.请简要描述树的基本概念及其特点。

答:树是由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.请实现二叉树的查找操作。

数据结构(树和二叉树)练习题与答案2

数据结构(树和二叉树)练习题与答案2

1、一颗二叉树的括号表示为“1(2(4,5(6,7)),3)”)。

设N代表二叉树的根,L代表根节点的左子树,R代表根节点的右子树。

若遍历后的节点序列为3,1,7,5,6,2,4,则其遍历方式是()。

A.NRLB.RLNC.LRND.RNL正确答案:D2、若二叉树(每个节点值为单个字符)的中序遍历序列是abcdef,且c为根节点,则()。

A.二叉树有两个度为0的节点B.二叉树的高度为5C.节点c有两个孩子D.以上都不对正确答案:C解析: C、从中序序列看出,节点c的左右子树均不空。

3、若知道一棵二叉树的(),便可以唯一确定该二叉树。

A.中序序列B.先序和后序序列C.中序和后序序列D.先序序列正确答案:C4、一棵二叉树的先序遍历序列为ABCDEFG,它的中序遍历序列可能是()。

A.ADCFEGB.ABCDEFGC.DACEFBGD.CABDEFG正确答案:B解析: B、当一棵二叉树所有节点的左子树为空时,先序遍历序列和中序遍历序列相同。

先序序列和中序序列可以确定一棵二叉树,这里由选项A、C和D的中序序列无法确定一棵二叉树。

5、一棵二叉树的先序遍历序列为ABCDEF,中序遍历序列为CBAEDF,则后序遍历序列为()A.FEDCBAB.CBEFDAC.CBEDFAD.不确定正确答案:B6、某棵二叉树中,X节点有左孩子Y节点,则在其先序遍历中()。

A.访问Y节点后,接着遍历Y节点的左子树,然后访问X节点B.访问X节点后,接着遍历Y节点的左子树,然后访问Y节点C.访问Y节点后立即访问X节点D.访问X节点后立即访问Y节点正确答案:D解析: D、其先序遍历序列为…XY…。

7、关于二叉树(含2个以上的节点)的先序遍历序列中,以下正确的是()。

A.先序遍历序列的最后一个节点是根节点B.先序遍历序列的最后一个节点一定是叶子节点C.以上都不对D.先序遍历序列的第一个节点一定是叶子节点正确答案:B解析: B、先序遍历过程是:NLR,最后访问的节点的L、R均为空,所以为叶子节点。

树和二叉树习题及答案

树和二叉树习题及答案

树和二叉树习题及答案一、填空题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)次序的遍历实现编号。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4(总分:74.00,做题时间:90分钟)一、综合题(总题数:35,分数:74.00)1.(1)试找出满足下列条件的二叉树:1)先序序列与后序序列相同2)中序序列与后序序列相同3)先序序列与中序序列相同4)中序序列与层次遍历序列相同(2)已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。

【东北大学1999六(4分)】【东南大学2000一、4(6分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:(1)先序遍历二叉树的顺序是“根一左子树一右子树”,中序遍历“左子树一根一右子树”,后序遍历顺序是“左子树一右子树一根”,根据以上原则,本题解答如下:1)若先序序列与后序序列相同,则或为空树,或为只有根结点的二叉树。

2)若中序序列与后序序列相同,则或为空树,或为任一结点至多只有左子树的二叉树。

3)若先序序列与中序序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。

4)若中序序列与层次遍历序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。

(2)由中序序列DBEAFIHCG和后序序列DEBHIFGCA)解析:2.分别给出满足下列条件的二叉树。

(1)前序和中序遍历结果相同;(2)前序和中序遍历结果不相同而是相反;(3)中序和后序遍历结果相同;(4)前序和后序遍历结果相同。

【四川大学2004】【烟台大学2007四、2(8分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:空二叉树满足题目要求,若二叉树非空,则(1)前序和中序遍历结果相同的二叉树是任一结点无左子女; (2)前序和中序遍历结果不相同而是相反的二叉树是任一结点无右子女; (3)中序和后序遍历结果相同的二叉树是任一结点无右子女; (4)前序和后序遍历结果相同的二叉树是只有根结点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

04树和二叉树【单选题】1. 下列选项中不属于树形结构逻辑特征的是(C)。

A、有的结点有多个直接后继B、有的结点没有直接后继C、有的结点有多个直接前驱D、有的结点没有直接前驱2. 下列叙述中错误的是(B)。

A、树的度与该树中结点的度的最大值相等B、二叉树就是度为2的有序树C、有5个叶子结点的二叉树中必有4个度为2的结点D、满二叉树一定是完全二叉树3. 一棵二叉树中第6层上最多有(C)个结点。

A、2B、31C、32D、644. 一棵高为k的二叉树最少有(B)个结点。

A、k-1B、kC、k+1D、2k-1E、2k-15. 一棵高为k的二叉树最多有(C)个结点。

A、k+1B、2k-1C、2k-1D、2kE、2k+16. 一棵高为k的完全二叉树最少有(B)个结点。

A、2k-1-1B、2k-1C、2k-1D、2k7. 一棵高为k的完全二叉树最多有(C)个结点。

A、2k-1-1B、2k-1C、2k-1D、2k8. 一棵度为3的树中,度为3的结点有2个,度为2的结点有2个,度为1的结点有2个,则度为0的结点有(D)个。

A、4B、5C、6D、79. 含1000个结点的完全二叉树的高度为(B)。

A、9B、10C、11D、1210. 设完全二叉树T中含有n个结点,对这些结点从0开始按层序进行编号,若编号为i的结点有左孩子,则左孩子的编号为(D)。

A、2(i-1)B、2i-1C、2iD、2i+1E、2(i+1)11. 已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为(D)。

A、-A+B*C/DEB、-A+B*CD/EC、-+*ABC/DED、-+A*BC/DE13. 先序遍历与中序遍历所得遍历序列相同的二叉树为(D )。

A 、根结点无左孩子的二叉树B 、根结点无右孩子的二叉树C 、所有结点只有左子树的二叉树D 、所有结点只有右子树的二叉树14. 下列叙述中正确的是(D )。

A 、由先序遍历序列和后序遍历序列可以惟一确定一棵二叉树B 、由森林转化而得的二叉树,其根结点一定有右子树C 、完全二叉树一定是满二叉树D 、在结点数目相同的二叉树中,完全二叉树的路径长度最短15. 由树转换而得的二叉树,根结点(B )。

A 、没有左子树B 、没有右子树C 、左右子树都有D 、视树的形态而定16. 由一个非空森林转换而得的二叉树,其根结点(D )。

A 、一定没有左子树B 、一定没有右子树C 、左右子树一定都有D 、左、右子树可能都有,也可能都没有17. 度为m 的赫夫曼树中,若叶子结点个数为n ,则非叶结点个数为(C )。

A 、n-1B 、m-1C 、[(n-1)/(m-1)]D 、[n/(m-1)]-1E 、[(n+1)/(m+1)]-1【填空题】1. 森林是(m 棵互不相交的树的集合,其中m ≥0)。

2. 在k 叉树的第i 层上最多有(k i-1)个结点。

3. 一棵高为k 的m 叉树中最少有(k )个结点,最多有(11--m m k )个结点。

4. 具有2400个结点的完全二叉树的深度为(12)。

5. 若二叉树T 有n 个叶子结点,则T 必有(n-1)个度为2的结点。

6. 一棵深度为k 且有(2k -1)个结点的二叉树称为满二叉树。

7. 设对完全二叉树T 上的结点按层序进行连续编号,根结点的编号为1。

若编号为i 的结点有双亲,则其双亲的编号为(⎣⎦2i );若编号为i 的结点有左孩子,则其左孩子的编号为(2i );若编号为i 的结点有右孩子,则其右孩子的编号为(2i+1)。

8. 对树进行后序遍历等价于对由该树转换而得的二叉树进行(中)序遍历;对树进行先序遍历等价于对由该树转换而得的二叉树进行(先)序遍历。

9. 对森林进行后序遍历等价于对由该森林转换而得的二叉树进行(中)序遍历;对森林进行先序遍历等价于对由该森林转换而得的二叉树进行(先)序遍历。

【计算题】1. 画出所有先序遍历序列为ABCD 的二叉树。

解:A(#,B(#,C(#,D)))、A(#,B(#,C(D,#)))、A(#,B(C,D))、A(#,B(C(#,D),#))、A(#,B(C(D,#),#))、A(B,C(#,D))、A(B,C(D,#))、A(B(#,C),D)、A(B(C,#),D)、A(B(#,C(#,D)),#)、A(B(#,C(D,#)),#)、A(B(C,D),#)、A(B(C(#,D),#),#)、A(B(C(D,#),#),#)。

2. 一棵深度为h 的满k 叉树有如下性质:第h 层上的结点都是叶子结点,其余各层上的每个结点都有k 个孩子结点。

若按层序从1开始对全部结点编号,则:(1)第i 层上有多少个结点?(2)编号为p 的结点的第i 个孩子结点(若存在)的编号是多少?(3)编号为p 的结点的双亲结点(若存在)的编号是多少?解:(1)第1层有1个结点,第i 层结点数=第i-1层结点数*k (2≤i ≤h ),可得第i 层结点数为1-i k 个。

(2)当根结点以及前面的p-1个结点的孩子都编了号之后,才开始为结点p 的孩子编号,可得结点p 的第i 个孩子的编号为(1+(p-1)*k)+i 。

(3)若p=1,则为根结点,无双亲,否则可设双亲结点编号为s,由⑵可知结点s 的孩子结点的编号范围为(s-1)*k+2~(s-1)*k+k+1,即k k p s k p 21-+≤≤-,又由s 为整数,可得⎥⎦⎥⎢⎣⎢-+=k k p s 2(p ≠1)。

3. 一棵含n 个结点的k 叉树,可能达到的最大深度是多少,可能达到的最小深度是多少?。

解:可能达到的最大深度是n ,最小深度是⎡⎤)1)1((log +-k n k 。

4. 已知一棵度为k 的树中有n 1个度为1的结点,n 2个度为2的结点,…,n k 个度为k 的结点,则该树有多少叶子结点?解:1*)1(1+-∑=k i i n i 。

5. 设树T 中有n 个结点,且所有分支结点的度均为k ,试求T 中叶子结点个数。

解:k n n 1--。

6. 已知完全二叉树T 上共有900个结点,试求:(1)T 的高度;(2)T 中叶子结点个数;(3)T 中度为1的结点个数。

解:⑴10;⑵450;⑶1。

7. 按层序对深度为k 的完全二叉树中全部结点从1开始编号,试求叶子结点可能的最小编号。

解:122+-k 。

8. 由遍历序列画出二叉树/树/森林。

(1)设一棵二叉树的先序序列为ABCDEFG,中序序列为CBEDFAG,试画出该二叉树。

(2)设一棵二叉树的中序序列为DBGEHAFCI,后序序列为DBHEBFICA,试画出该二叉树。

(3)已知树的先序遍历序列为GFKDAIEBCHJ,树的后序遍历序列为DIAEKFCJHBG,试画出该树。

(4)已知森林的先序遍历序列为ABCDEFGHIJKL,后序遍历序列为CBEFDGAJIKLH,试画出该森林。

(5)已知二叉树的层序序列为ABCDEFGHIJ,中序序列为DBGEHJACIF,试画出该二叉树。

解:(1)(2)(3)(4)(5)9. 设有二叉树如下:(1)试写出该二叉树的先、中、后、层序遍历序列;(2)试画出对应的先、中、后序线索二叉树存储结构。

(2)先序线索二叉树:中序线索二叉树:后序线索二叉树:10. 试将如下森林转为二叉树。

解:11. 试将下图中的树转为二叉树。

解:12. 设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07、0.19、0.02、0.06、0.32、0.03、0.21、0.10,试为这8个字母设计赫夫曼编码。

解:设8个字母为a、b、c、d、e、f、g、h,以出现频率为权值可构造赫夫曼树如下,然后以左分支表0,右分支表1,由根结点到字母所在叶子结点的路径,可得对应01串,此即该字母的赫夫曼编码(a:1010b:00c:10000d:1001e:11f:10001g:01h:1011)。

【算法题】下列算法题中可能用到的类如下:public class BiTreeNode {//二叉结点类public String data; //数据元素是长度为1的大写字母串public BiTreeNode lchild;public BiTreeNode rchild;public BiTreeNode(String d){ data=d; lchild=null; rchild=null; }}//BiTreeNodepublic class BiTree {//二叉链表类private BiTreeNode root;public BiTree(){root=null;}}//BiTreepublic abstract class Stack{//抽象栈类public abstract boolean isEmpty();public abstract boolean isFull();public abstract boolean push(Object k);public abstract Object pop();public abstract Object get();}//Stackpublic class OnelinkNode{//链栈结点类public Object data;public OnelinkNode next;public OnelinkNode(Object obj){ data=obj; next=null; }}//OnelinkNodepublic class OnelinkStack extends Stack{//链栈类private OnelinkNode head;public OnelinkStack(){ head=new OnelinkNode(null); }…//Stack中各抽象方法的实现}//OnelinkStack1. 在BiTree类中添加符合如下要求的构造函数:(1)由二叉树的广义表表示串(例如“A(B,C(#,D))”)生成对应的二叉链表;(2)由二叉树的中序和后序遍历序列串生成对应的二叉链表;(3)由一个二叉链表复制生成一个值相同的二叉链表。

2. 在BiTree类中添加实现如下功能的方法:(1)分别统计二叉树中度为2、度为1和度为0的结点的个数;(2)设二叉树上各数据元素的值各不相同,试求值为"X"的数据元素所在的层次值;(3)求二叉树的高解:(5)在BiTreeNode类中加入:public void alte( ){if (lchild!=null) lchild.alte(); //处理左子树if (rchild!=null) rchild.alte(); //处理右子树BiTreeNode temp;//交换当前结点左、右子树temp=lchild;lchild=rchild;rchild=temp;}在BiTree类中加入:public void alte(){ if (root!=null) root.alte(); }3. 设完全二叉树的顺序存储结构类SqTree定义如下:public class SqTree{private String[ ] table;private int len;public SqTree(int maxsize){table=new String[maxsize];len=0;}//构造函数public String getElem(int i){if (i<0||i>=table.length) return null; else return table[i];}//getElempublic int getLen(){return len;}}//SqTree试设计BiTree类的构造函数,由完全二叉树的顺序存储生成对应的二叉链表。

相关文档
最新文档