数据结构二叉树习题含答案

合集下载

数据结构叉树习题含答案

数据结构叉树习题含答案

第6章树和二叉树1.选择题(1)把一棵树转换为二叉树后,这棵二叉树的形态是()。

A.唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子(2)由3 个结点可以构造出多少种不同的二叉树?()A.2 B.3 C.4 D.5(3)一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。

A.250 B. 500 C.254 D.501(4)一个具有1025个结点的二叉树的高h为()。

A.11 B.10 C.11至1025之间 D.10至1024之间(5)深度为h的满m叉树的第k层有()个结点。

(1=<k=<h)A.m k-1 B.m k-1 C.m h-1 D.m h-1(6)利用二叉链表存储树,则根结点的右指针是()。

A.指向最左孩子 B.指向最右孩子 C.空 D.非空(7)对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()遍历实现编号。

A.先序 B. 中序 C. 后序 D. 从根开始按层次遍历(8)若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适。

A.前序 B.中序 C.后序 D.按层次(9)在下列存储形式中,()不是树的存储形式?A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法D.顺序存储表示法(10)一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。

A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点 D.是任意一棵二叉树(11)某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。

A.空或只有一个结点 B.任一结点无左子树C.高度等于其结点数 D.任一结点无右子树(12)若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。

A.X的双亲 B.X的右子树中最左的结点C.X的左子树中最右结点 D.X的左子树中最右叶结点(13)引入二叉线索树的目的是()。

数据结构(c语言)第6章二叉树课练答案(含完整实验程序刘玉保留

数据结构(c语言)第6章二叉树课练答案(含完整实验程序刘玉保留

第6章树和二叉树自测卷解答姓名班级一、下面是有关二叉树的叙述,请判断正误(每小题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。

(注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=94.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。

数据结构树和二叉树习题及答案

数据结构树和二叉树习题及答案

习题六树和二叉树一、单项选择题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.利用二叉链表存储树,则根结点的右指针是()。

《数据结构》习题汇编06第六章树和二叉树试题

《数据结构》习题汇编06第六章树和二叉树试题

第六章树和二叉树试题一、单项选择题1.树中所有结点的度等于所有结点数加()。

A. 0B. 1C. -1D. 22.在一棵树中,()没有前驱结点。

A. 分支结点B. 叶结点C. 根结点D. 空结点3.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。

A. 2B. 1C. 0D. -14.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于()。

A. nB. n-1C. n+1D. 2*n5.在一棵具有n个结点的二叉树的第i层上(假定根结点为第0层,i大于等于0而小于等于树的高度),最多具有()个结点。

A. 2iB. 2i+1C. 2i-1D. 2n6.在一棵高度为h(假定根结点的层号为0)的完全二叉树中,所含结点个数不小于()。

A. 2h-1B. 2h+1C. 2h-1D. 2h7.在一棵具有35个结点的完全二叉树中,该树的高度为()。

假定空树的高度为-1。

A. 5B. 6C. 7D. 88.在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。

假定树根结点的编号为0。

A. ⎣(n-1)/2⎦B. ⎣n/2⎦C. ⎡n/2⎤D. ⎣n/2⎦ -19.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左子女结点的编号为()。

假定根结点的编号为0A. 2iB. 2i-1C. 2i+1D. 2i+210.在一棵完全二叉树中,假定根结点的编号为0,则对于编号为i(i>0)的结点,其双亲结点的编号为()。

A. ⎣(i+1)/2⎦B. ⎣(i-1)/2⎦C. ⎣i/2⎦D. ⎣i/2⎦-111.在一棵树的左子女-右兄弟表示法中,一个结点的右孩子是该结点的()结点。

A. 兄弟B. 子女C. 祖先D. 子12.在一棵树的静态双亲表示中,每个存储结点包含()个域。

A. 1B. 2C. 3D. 413.已知一棵二叉树的广义表表示为a (b (c), d (e ( , g (h) ), f ) ),则该二叉树的高度为()。

数据结构课后习题答案及解析第六章

数据结构课后习题答案及解析第六章

第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。

表示该遗传关系最适合的数据结构为( )。

A.向量B.树 C图 D.二叉树2.树最合适用来表示( )。

A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。

A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。

A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。

A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为 ( )。

A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。

A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。

A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。

..专业知识编辑整理..10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.4..专业知识编辑整理..11.在一棵具有35个结点的完全二叉树中,该树的深度为( )。

计算机存储和组织数据方式之《数据结构》关于“树”的习题(PPT内含答案)

计算机存储和组织数据方式之《数据结构》关于“树”的习题(PPT内含答案)

• 12.已知二叉树的先序遍历和后序遍历不能唯一确定这棵 二叉树,这是因为不知道根结点是哪一个。

(T )
• 7.树结构中的每个结点最多只有一个直接前驱。 (T )
• 8.完全二叉树一定是满二叉树。 (F)
• 9.由树转换成二叉树,其根结点的右子树一定为空。 (T )
• 10.在先序遍历二叉树的序列中,任何结点的子树的所有 结点都是直接跟在该结点之后。( F )
• 11.一棵二叉树中序遍历序列的最后一个结点,发家是该 二叉树先序遍历的最后一个结点。 ( T )
B.CBDGFEA D.CBEGFDA
• 8.某二又树的后序遍历序列为DABEC,中序遍历序列为
DEBAC,则先序遍历序列为( D )。
• A.ACBED C.DEABC
B.DECAB D.CEDBA
• 9.在完全二叉树中,如果一个结点是叶子结点,则它没 有( C )。
• A.左孩子结点
B.右孩子结点
• 5.对于二叉树来说,第i层上最多有___2i-1______个结点。 • 6.由三个结点构成的二叉树,共有____5_____种不同的
结构。
• 7.由一棵二叉树的先序序列和___中序____序列可唯一 确定这棵二叉树。
习题6
• 9.先序序列和中序序列相同的二叉树为单右枝二叉树或 孤立结点。
• 10.设一棵二叉树共有50个叶子结点(终端结点),则有 ______49______度为2的结点。
• A. 5
B. 6
• C. 7
D. 8
• 6.二叉树的先序遍历序列为ABC的不同二叉树有( C ) 种形态。
• A. 3
B. 4
• C. 5
D.6
习题6

数据结构教程李春葆课后答案第7章树和二叉树

数据结构教程李春葆课后答案第7章树和二叉树
第 7 章 树和二叉树
教材中练习题及参考答案
1. 有一棵树的括号表示为 A(B,C(E,F(G)),D),回答下面的问题: (1)指出树的根结点。 (2)指出棵树的所有叶子结点。 (3)结点 C 的度是多少? (4)这棵树的度为多少? (5)这棵树的高度是多少? (6)结点 C 的孩子结点是哪些? (7)结点 C 的双亲结点是谁? 答:该树对应的树形表示如图 7.2 所示。 (1)这棵树的根结点是 A。 (2)这棵树的叶子结点是 B、E、G、D。 (3)结点 C 的度是 2。 (4)这棵树的度为 3。 (5)这棵树的高度是 4。 (6)结点 C 的孩子结点是 E、F。 (7)结点 C 的双亲结点是 A。
12. 假设二叉树中每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法 计算一棵给定二叉树 b 中的所有单分支结点个数。 解:计算一棵二叉树的所有单分支结点个数的递归模型 f(b)如下:
f(b)=0 若 b=NULL
6 f(b)=f(b->lchild)+f(b->rchild)+1 f(b)=f(b->lchild)+f(b->rchild)
表7.1 二叉树bt的一种存储结构 1 lchild data rchild 0 j 0 2 0 h 0 3 2 f 0 4 3 d 9 5 7 b 4 6 5 a 0 7 8 c 0 8 0 e 0 9 10 g 0 10 1 i 0
答:(1)二叉树bt的树形表示如图7.3所示。
a b c e h j f i d g e h j c f i b d g a
对应的算法如下:
void FindMinNode(BTNode *b,char &min) { if (b->data<min) min=b->data; FindMinNode(b->lchild,min); //在左子树中找最小结点值 FindMinNode(b->rchild,min); //在右子树中找最小结点值 } void MinNode(BTNode *b) //输出最小结点值 { if (b!=NULL) { char min=b->data; FindMinNode(b,min); printf("Min=%c\n",min); } }

数据结构二叉树习题含答案

数据结构二叉树习题含答案

第6章树和二叉树1.选择题(1)把一棵树转换为二叉树后,这棵二叉树的形态是()。

A.唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子(2)由3 个结点可以构造出多少种不同的二叉树?()A.2 B.3 C.4 D.5(3)一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。

A.250 B. 500 C.254 D.501(4)一个具有1025个结点的二叉树的高h为()。

A.11 B.10 C.11至1025之间 D.10至1024之间(5)深度为h的满m叉树的第k层有()个结点。

(1=<k=<h)A.m k-1 B.m k-1 C.m h-1 D.m h-1(6)利用二叉链表存储树,则根结点的右指针是()。

A.指向最左孩子 B.指向最右孩子 C.空 D.非空(7)对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()遍历实现编号。

A.先序 B. 中序 C. 后序 D. 从根开始按层次遍历(8)若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适。

A.前序 B.中序 C.后序 D.按层次(9)在下列存储形式中,()不是树的存储形式?A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法D.顺序存储表示法(10)一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。

A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点 D.是任意一棵二叉树(11)某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。

A.空或只有一个结点 B.任一结点无左子树C.高度等于其结点数 D.任一结点无右子树(12)若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。

A.X的双亲 B.X的右子树中最左的结点C.X的左子树中最右结点 D.X的左子树中最右叶结点(13)引入二叉线索树的目的是()。

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

} ChangeLR(T->lchild); ChangeLR(T->rchild); } ( 4)设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访 问这个结点, 再按双序遍历它的左子树, 右子树)。 void DoubleTraverse(BiTree T) { if(T == NULL) return; else if(T->lchild==NULL&&T->rchild==NULL) cout<<T->data; else { cout<<T->data; DoubleTraverse(T->lchild); cout<<T->data; DoubleTraverse(T->rchild); } } ( 5)计算二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大 值) 。 [ 题目分析 ] 求二叉树高度的算法见上题。求最大宽度可采用层次遍历的方法,记下各 层结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。 int Width(BiTree bt)// { if (bt==null) else {BiTree Q[];//Q 结点在队列中的位置 temp=0; maxw=0; Q[rear]=bt; // while (front<=last) {p=Q[front++]; temp++; // 同层元素数加 1 左子女入队 右子女入队 if (p->lchild!=null) Q[++rear]=p->lchild; // if (p->rchild!=null) Q[++rear]=p->rchild; // if (front>last) {last=rear; if (temp>maxw) maxw=temp;//last temp=0; }// if return (maxw); }// while 指向下层最右元素 , 更新当前最大宽度 // 一层结束, //temp 记局部宽度 , maxw 记最大宽度 根结点入队列 是队列,元素为二叉树结点指针,容量足够大 队头指针 ,rear 队尾指针 ,last 同层最右 front=1;rear=1;last=1;//front 求二叉树 bt 的最大宽度 return (0); // 空二叉树宽度为 0 然后再一次访问这个结点, 接下来按双序遍历它的
}// 结束 width ( 6)用按层次顺序遍历二叉树的方法,统计树中具有度为 int { int Level(BiTree bt) // 层次遍历二叉树,并统计度为 num=0; //num 统计度为 1 的结点的个数 if (bt){QueueInit(Q); QueueIn(Q,bt) while (!QueueEmpty(Q)) {p=QueueOut(Q); printf(p->data); 1 的结点 if (p->lchild) QueueIn(Q,p->lchild); // if (p->rchild) QueueIn(Q,p->rchild); // } }// return (num); }// if (bt) 返回度为 1 的结点的个数 非空左子女入队 非空右子女入队 // 出队 , 访问结点 度为 if (p->lchild && !p->rchild ||!p->lchild && p->rchild)num++;// ; //Q 是以二叉树结点指针为元素的队列 1 的结点数目。 1 的结点的个数
第 6章
1.选择题
树和二叉树
) 。
( 1)把一棵树转换为二叉树后,这棵二叉树的形态是( A.唯一的 C.有多种,但根结点都没有左孩子 A. 2 A. 250 A. 11 A. m
k-1
B.有多种 D.有多种,但根结点都没有右孩子 ) D. 5 ) 。 D . 501 ) 。 D . 10 至 1024 之间
weight
parent
lchild
rchild
1 2 3 4 5 6 7 8 9 10 11 12 13
3 12 7 4 2 8 11 5 9 15 20 27 47
8 12 10 9 8 10 11 9 11 12 13 13 0
0 0 0 0 0 0 0 5 4 3 9 2 11
0 0 0 0 0 0 0 1 8 6 7 10 12
h
( 2)由 3 个结点可以构造出多少种不同的二叉树?( B B B B .3 . 500 . 10 . m-1 B
k
C C
.4 . 254 h 为(
( 3)一棵完全二叉树上有
1001 个结点,其中叶子结点的个数是(
( 4)一个具有 1025 个结点的二叉树的高 ( 5)深度为 h 的满 m叉树的第 k 层有( C
F
G
H
( (1) (2) 8 个字母组成,字母在电文中出现的频率分别为 0.07 , ( 3) 假设用于通信的电文仅由
0.19, 0.02, 0.06 , 0.32, 0.03, 0.21 , 0.10 。 ① 试为这 8 个字母设计赫夫曼编码。 ② 试设计另一种由二进制表示的等长编码方案。 ③ 对于上述实例,比较两种方案的优缺点。 解:方案 1;哈夫曼编码 先将概率放大 100 倍,以方便构造哈夫曼树。 19, 21, 32 w={7,19,2,6,32,3,21,10} ,按哈夫曼规则: 【 [ ( 2,3) , 6], (7,10) 】 , ,, ( 100) ( 40) 19 21 32 ( 60) ( 28) ( 11) 19 0 ( 17) 0 1 21 0 32 0 0 7 10 10 6 0 2 1 1 1 3 1 1
7
10
6 2
( 5) 3
方案比较: 字母 编号 1 2 3 4 5 编码 1100 00 11110 1110 10 对 应 频率 0.07 0.19 0.02 0.06 0.32 出现 编号 1 2 3 4 5 6 方 案 1 的 字母 编码 000 001 010 011 100 101 WPL 对应 频率 0.07 0.19 0.02 0.06 0.32 0.03 = 出 现
A、 B、 C、 D、 E、 F、 G的权值分别为 HT 的存储结构的初态和终态。
3 、 12、 7 、 4 、 2、 8, 11,试
parent 0 0 0 0 0 0 0 0 0 0 0 0 0
lchild 0 0 0 0 0 0 0 0 0 0 0 0 0
rchild 0 0 0 0 0 0 0 0 0 0 0 0 0
且 X 不为根,则 X 的前驱为(
) 。
. X 的右子树中最左的结点 . X 的左子树中最右叶结点 .为了能在二叉树中方便的进行插入与删 .使二叉树的遍历结果唯一 .物理 D .线性
( 15)设 F 是一个森林, B 是由 F 变换得的二叉树。若 右指针域为空的结点有( A. n-1 2.应用题 ( 1)试找出满足下列条件的二叉树 ① 先序序列与后序序列相同 ③ 先序序列与中序序列相同 B )个。 .n C
( 7)求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。 [ 题目分析 ] 因为后序遍历栈中保留当前结点的祖先的信息, 指针, 每当退栈时, 栈顶指针高于保存最高栈顶指针的值时, void LongestPath(BiTree bt)// {BiTree p=bt,l[],s[]; //l, s 径中的结点 int { i , top=0,tag[],longest=0; while (p) {s[++top]=p // ; tag[top]=0; p=p->Lc;} // 当前结点的右分枝已遍历 只有到叶子结点时,才查看路径长度 for (i=1;i<=top;i++) l[i]=s[i]; longest=top; top--;} l 栈,记住最高栈顶指针,退栈 沿右子分枝向下 沿左分枝向下 while (p || top>0) if (tag[top]==1) 用一变量保存栈的最高栈顶 则将该栈倒入辅助栈中, 辅助
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 )已知下列字符 填写出其对应哈夫曼树 初态 : weight 1 2 3 4 5 6 7 8 9 10 11 12 13 3 12 7 4 2 8 11
C . 11 至 1025 之间 )个结点。 (1=<k=<h) .m
h-1
D
. m -1 ) 。 C .空 D .非空 )遍历
( 6)利用二叉链表存储树,则根结点的右指针是( A.指向最左孩子 ( 7)对二叉树的结点从 实现编号。 A.先序 用( B. 中序 C. 后序 .指向最右孩子
1 开始进行连续编号,要求每个结点的编号大于其左、右孩子
的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( D. 从根开始按层次遍历
( 8)若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利 )遍历方法最合适。 A.前序 B .中序 B .孩子链表表示法 C .后序 D .按层次 D.顺序存储 表示法 则该二叉树一定满 )不是树的存储形式? C .孩子兄弟表示法
终态
3.算法设计题 以二叉链表作为二叉树的存储结构,编写以下算法: ( 1)统计二叉树的叶结点个数。 int LeafNodeCount(BiTree T) { if(T==NULL) return 0; 数为 0 else if(T->lchild==NULL&&T->rchild==NULL) return 1; (左孩子右孩子都为空) ,若是则返回 else return LeafNodeCount(T->lchild)+LeafNodeCount(T->rchild); } ( 2)判别两棵树是否相等。 ( 3)交换二叉树每个结点的左孩子和右孩子。 void ChangeLR(BiTree &T) { BiTree temp; if(T->lchild==NULL&&T->rchild==NULL) return; else { temp = T->lchild; T->lchild = T->rchild; T->rchild = temp; // 1 判断该结点是否是叶子结点 // 如果是空树,则叶子结点个
相关文档
最新文档