数据结构第6章树练习

数据结构第6章树练习
数据结构第6章树练习

void PreOrder_Nonrecursive(Bitree T)//先序遍历二叉树的非递归算法

{

InitStack(S);

Push(S,T); //根指针进栈

while(!StackEmpty(S))

{

while(Gettop(S,p)&&p)

{

visit(p->data);

push(S,p->lchild);

} //向左走到尽头

pop(S,p);

if(!StackEmpty(S))

{

pop(S,p);

push(S,p->rchild); //向右一步

}

}//while

}//PreOrder_Nonrecursive

一、下面是有关二叉树的叙述,请判断正误

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

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

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

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

5.具有12个结点的完全二叉树有5个度为2的结点。()

最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5

6.二叉树是度为2的有序树()

7.完全二叉树一定存在度为1的结点()

8.深度为K的二叉树中结点总数≤2k-1()

9.由一棵二叉树的先序序列和后序序列可以惟一确定它()

10.完全二叉树中,若一个结点没有左孩子,则它必是树叶()

11.用二叉链表存储n个结点的二叉树时,结点的2n个指针中有n+1个空指针()12.完全二叉树的存储结构通常采用顺序存储结构()

13.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近()14.在中序线索二叉树中,每一非空的线索均指向其祖先结点()

二、填空

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

2. 用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman)树的带权路径长度是

3.深度为H 的完全二叉树至少有_____________个结点;至多有_____________个结点4.已知二叉树有50个叶子结点,则该二叉树的总结点数至少是_____________。

5. n(n大于1)个结点的各棵树中,其深度最小的那棵树的深度是_____________。它共有_____________个叶子结点和_____________个非叶子结点,其中深度最大的那棵树的深度是_____________,它共有_____________个叶子结点和_____________个非叶子结点。

三、单项选择题

1.有关二叉树下列说法正确的是()

A)二叉树的度为2 B)一棵二叉树的度可以小于2

C)二叉树中至少有一个结点的度为2 D)二叉树中任何一个结点的度都为2

2.二叉树的第I层上最多含有结点数为()

A)2I B)2I-1-1 C)2I-1D)2I-1

3.具有10个叶结点的二叉树中有()个度为2的结点

A)8 B)9 C)10 D)11

4.在下述结论中,正确的是()

①只有一个结点的二叉树的度为0;

②二叉树的度为2;

③二叉树的左右子树可任意交换;

④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A)①②③B)②③④C)②④D)①④

5.由3 个结点可以构造出多少种不同的二叉树?()

A)2 B)3 C)4 D)5

6.引入二叉线索树的目的是()

A)加快查找结点的前驱或后继的速度

B)为了能在二叉树中方便的进行插入与删除

C)为了能方便的找到双亲

D)使二叉树的遍历结果惟一

7.有n个叶子的哈夫曼树的结点总数为()

A)不确定B)2n C)2n+1 D)2n-1

8.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()

A)所有的结点均无左孩子B)所有的结点均无右孩子

C)只有一个叶子结点D)是任意一棵二叉树

9.已知一棵二叉树的后序遍历序列为DABEC,中序遍历序列为DEBAC,则它的先序遍历序列为()

A)ACBED B)DECAB C)DEABC D)CEDBA

四、

1.已知一棵二叉树的中序序列和后序序列分别为GLDHBEIACJFK和LGHDIEBJKFCA (1)给出这棵二叉树;(2)转换为对应的森林。

2.一棵二叉树的先序、中序、后序序列如下,其中一部分未标出,请构造出该二叉树。

先序序列:_ _ C D E _ G H I _ K

中序序列:C B _ _ F A _ J K I G

后序序列:_ E F D B _ J I H _ A

3、已知一棵二叉树按顺序方式存储在数组A[1..n]中。设计算法,求出下标分别为i和j的两个结点的最近的公共祖先结点的值。

4、编写递归算法,计算二叉树中叶子结点的数目。

答案:

一、

1.×

2.×

3. ×

4. √

5. √

6. ×

7. ×

8. √

9. ×10. √11. √12. √13. √14. √【解析】在二叉树上,对有左右子女的结点,其中序前驱是其左子树上按中序遍历的最右边的结点(该结点的后继指针指向祖先),中序后继是其右子树上按中序遍历的最左边的结点(该结点的前驱指针指向祖先)。

二、

1.9 2.33 3. 2H-12H-1 H=?log2N?+1 4. 99 5. 【答案】(1)2 (2)n-1 (3)1 (4)n (5)1 (6)n-1

三、

1.B 2.C 3.B 4.D 5.D 6.A 7.D 8. C【解析】先序序列是“根左右”,后序序列是“左右根”,若要这两个序列相反,只有单支树,单支树的特点是只有一个叶子结点或高度等于其结点数,故选C。9.D

四、

1、

2、

3、【算法分析】

二叉树顺序存储,是按完全二叉树的格式存储,利用完全二叉树双亲结点与子女结点编号间的关系,求下标为i和j的两结点的双亲,双亲的双亲…等等,直至找到最近的公共祖先。【算法源代码】

typedef int ElemType;

void Ancestor(ElemType A[],int n,int i,int j)

{while(i!=j)

if(i>j) i=i/2; /*下标为i的结点的双亲结点的下标*/

else j=j/2; /*下标为j的结点的双亲结点的下标*/

printf("所查结点的最近公共祖先的下标是%d,值是%d",i,A[i]);

}/* Ancestor*/

4、编写递归算法,计算二叉树中叶子结点的数目。

解:思路:输出叶子结点比较简单,用任何一种遍历递归算法,凡是左右指针均空者,则为叶子,将其打印出来。

核心部分为:

DLR(liuyu *root) /*中序遍历递归函数*/

{if(root!=NULL)

{if((root->lchild==NULL)&&(root->rchild==NULL)){sum++; printf("%d\n",root->data);} DLR(root->lchild);

DLR(root->rchild); }

return(0);

}

法二:

int LeafCount_BiTree(Bitree T)//求二叉树中叶子结点的数目

{

if(!T) return 0; //空树没有叶子

else if(!T->lchild&&!T->rchild) return 1; //叶子结点

else return Leaf_Count(T->lchild)+Leaf_Count(T->rchild);//左子树的叶子数加

上右子树的叶子数

}//LeafCount_BiTree

但上机时要先建树!

①打印叶子结点值(并求总数)

思路:先建树,再从遍历过程中打印结点值并统计。

步骤1 键盘输入序列12,8,17,11,16,2,13,9,21,4,构成一棵二叉排序树。叶子结点值应该是4,9,13,21,总数应该是4.

12

717

2 11 16 21

9 13

编程:生成二叉树排序树之后,再中序遍历排序查找结点的完整程序如下:

说明部分为:

#include

#include

typedef struct liuyu{int data;struct liuyu *lchild,*rchild;}test;

liuyu *root;

int sum=0;int m=sizeof(test);

void insert_data(int x) /*如何生成二叉排序树?参见教材P43C程序*/

{ liuyu *p,*q,*s;

s=(test*)malloc(m);

s->data=x;

s->lchild=NULL;

s->rchild=NULL;

if(!root){root=s; return;}

p=root;

while(p) /*如何接入二叉排序树的适当位置*/

{q=p;

if(p->data==x){printf("data already exist! \n");return;}

else if(xdata)p=p->lchild; else p=p->rchild;

}

if(xdata)q->lchild=s;

else q->rchild=s;

}

DLR(liuyu *root) /*中序遍历递归函数*/

{if(root!=NULL)

{if((root->lchild==NULL)&&(root->rchild==NULL)){sum++; printf("%d\n",root->data);} DLR(root->lchild);

DLR(root->rchild); }

return(0);

}

main() /*先生成二叉排序树,再调用中序遍历递归函数进行排序输出*/ {int i,x;

i=1;

root=NULL; /*千万别忘了赋初值给root!*/

do{printf("please input data%d:",i);

i++;

scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/

if(x==-9999){

DLR(root);

printf("\nNow output count value:%d\n",sum);

return(0); }

else insert_data(x);} /*调用插入数据元素的函数*/

while(x!=-9999);

return(0);}

执行结果:

若一开始运行就输入-9999,则无叶子输出,sum=0。

数据结构-习题-第六章-树

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

E F D G A B / + + * - C * 第六章 树和二叉树 一、选择题 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 .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-G 4. 设树T 的度为4,其中度为1,2,3和4的 结点个数分别为4,2,1,1 则T 中的叶子数 为( ) A .5 B .6 C .7

D.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-n B.m-n-1 C.n+1 D.条件不足,无法确定【南京理工大学2000 一、17(1.5分)】 7. 树是结点的有限集合,它( (1))根结点,记为T。其余结点分成为m(m>0)个((2))的集合T1,T2,…,Tm,每个集合又都是树,此时结点T称为Ti的父结点,Ti称为T的子结点(1≤i≤m)。一个结点的子结点个数称为该结

数据结构习题(456章)

第四章串 一.选择题 1.若串S='software',其子串的数目是() A.8 B.37 C.36 D.9 2.设有两个串p和q,求q在p中首次出现的位置的运算称作() A.连接B.模式匹配C.求串长D.求子串 3.设字符串S1=“ABCDEFG”,S2=“PQRST”,则运算: S=CONCAT(SUBSTR(S1,2,LEN(S2));SUBSTR(S1,LEN(S2),2));后的串值为() A.A BCDEF B.BCDEFG C.BCDPQRST D. BCDEFEF 4.下面的说法中,只有()是正确的 A.串是一种特殊的线性表B.串的长度必须大于零 C.串中元素只能是字母D.空串就是空白串 5.两个字符串相等的条件是() A.两串的长度相等 B.两串包含的字符相同 C.两串的长度相等,并且两串包含的字符相同 D.两串的长度相等,并且对应位置上的字符相同 二.填空题 1.串“ababcbaababd”的next函数值为,nextval函数值为。2.子串的长度为。 第五章数组和广义表 一.选择题 1.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( ) A. BA+141 B. BA+180 C. BA+222 D. BA+225 2.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=() A. 808 B. 818 C. 1010 D. 1020 3.对稀疏矩阵进行压缩存储目的是() A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D.降低运算的时间复杂度 4.假设以三元组表表示稀疏矩阵,则与如图所示三元组表对应的4×5的稀疏矩阵是(注:矩阵的行列下标均从1开始)()

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

第六章 树和二叉树 一、选择题 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 .5 B .6 C .7 D .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-n B .m-n-1 C .n+1 D .条件不足,无法确定 【南京理工大学2000 一、 17(1.5分)】 7. 树是结点的有限集合,它( (1))根结点,记为T 。其余结点分成为m (m>0)个((2)) 的集合T1,T2, …,Tm ,每个集合又都是树,此时结点T 称为Ti 的父结点,Ti 称为T 的子结点(1≤i ≤m )。一个结点的子结点个数称为该结点的( (3) )。二叉树与树是两个 不同的概念,二叉树也是结点的有限集合,它((4))根结点。可以把树的根结点的层数定 义为1,其他结点的层数等于其父结点所在层数加上1。令T 是一棵二叉树,Ki 和Kj 是T 中子结点数小于2的结点中的任意两个,它们所在的层数分别为λKi 和λKj ,当关系式│ λKi-λKj │≤1一定成立时,则称T 为一棵((5))。供选择的答案: (1)(4) A. 有0个或1个 B. 有0个或多个 C. 有且只有一个 D. 有1个或1 个以上 (2) A. 互不相交 B.允许相交 C.允许叶结点相交 D.允许树枝结点相交 (3) A. 权 B.维数 C.次数 D.序 (5) A. 丰满树 B.查找树 C.平衡树 D.完全树 【上海海运学院1999二、 2(5分)】 8.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( ) A .9 B .11 C .15 D .不确定 【北京工商大学2001一.7(3 分)】 9.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2

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

第四章习题(P111-113) 一、复习题 1、试述数据和数据结构的概念及其区别。 数据是对客观事物的符号表示,是信息的载体;数据结构则是指互相之间存在着一种或多种关系的数据元素的集合。(P93) 2、列出算法的五个重要特征并对其进行说明。 算法具有以下五个重要的特征:有穷性:一个算法必须保证执行有限步之后结束。确切性:算法的每一步骤必须有确切的定义。输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件。输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法没有实际意义。可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。(P95) 3、算法的优劣用什么来衡量?试述如何设计出优秀的算法。 时间复杂度空间复杂度(P97-98) 4、线性和非线性结构各包含哪些种类的数据结构?线性结构和非线性结构各有什么特点? 线性结构用于描述一对一的相互关系,即结构中元素之间只有最基本的联系,线性结构的特点是逻辑结构简单。所谓非线性结构是指,在该结构中至少存在一个数据元素,有两个或两个以上的直接前驱(或直接后继)元素。树型和图型结构就是其中十分重要的非线性结构,可以用来描述客观世界中广泛存在的层次结构和网状结构的关系。(P99-105) 5、简述树与二叉树的区别;简述树与图的区别。 树用来描述层次结构,是一对多或多对一的关系;二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。图也称做网,是一种比树形结构更复杂的非线性结构。在图中,任意两个节点之间都可能相关,即节点之间的邻接关系可以是任意的,图表示的多对多的关系。(P102-P104) 6、请举出遍历算法在实际中使用的例子。 提示:根据实际生活中需要逐个访问处理的情况举例。 7、编写一个算法,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。 提示:根据查找算法和串中求子串的算法,查找输入串中以单个字符形式的子串。 8、若对有n个元素的有序顺序表和无序顺序表进行顺序搜索,试就下列三种情况分别讨论两者在等搜索概率时的平均搜索长度是否相同? (1) 搜索失败; (2) 搜索成功,且表中只有一个关键码等于给定值k的对象; (3) 搜索成功,且表中有若干个关键码等于给定值k的对象,要求一次搜索找出所有对象。

数据结构第6章树练习

void PreOrder_Nonrecursive(Bitree T)//先序遍历二叉树的非递归算法 { InitStack(S); Push(S,T); //根指针进栈 while(!StackEmpty(S)) { while(Gettop(S,p)&&p) { visit(p->data); push(S,p->lchild); } //向左走到尽头 pop(S,p); if(!StackEmpty(S)) { pop(S,p); push(S,p->rchild); //向右一步 } }//while }//PreOrder_Nonrecursive 一、下面是有关二叉树的叙述,请判断正误 1.二叉树中每个结点的两棵子树的高度差等于1。() 2.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。() 3.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i —1个结点。() 4.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。() 5.具有12个结点的完全二叉树有5个度为2的结点。() 最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5 6.二叉树是度为2的有序树() 7.完全二叉树一定存在度为1的结点() 8.深度为K的二叉树中结点总数≤2k-1() 9.由一棵二叉树的先序序列和后序序列可以惟一确定它() 10.完全二叉树中,若一个结点没有左孩子,则它必是树叶()

11.用二叉链表存储n个结点的二叉树时,结点的2n个指针中有n+1个空指针()12.完全二叉树的存储结构通常采用顺序存储结构() 13.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近()14.在中序线索二叉树中,每一非空的线索均指向其祖先结点() 二、填空 1. 一棵具有257个结点的完全二叉树,它的深度为。 2. 用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman)树的带权路径长度是 3.深度为H 的完全二叉树至少有_____________个结点;至多有_____________个结点4.已知二叉树有50个叶子结点,则该二叉树的总结点数至少是_____________。 5. n(n大于1)个结点的各棵树中,其深度最小的那棵树的深度是_____________。它共有_____________个叶子结点和_____________个非叶子结点,其中深度最大的那棵树的深度是_____________,它共有_____________个叶子结点和_____________个非叶子结点。 三、单项选择题 1.有关二叉树下列说法正确的是() A)二叉树的度为2 B)一棵二叉树的度可以小于2 C)二叉树中至少有一个结点的度为2 D)二叉树中任何一个结点的度都为2 2.二叉树的第I层上最多含有结点数为() A)2I B)2I-1-1 C)2I-1D)2I-1 3.具有10个叶结点的二叉树中有()个度为2的结点 A)8 B)9 C)10 D)11 4.在下述结论中,正确的是() ①只有一个结点的二叉树的度为0; ②二叉树的度为2; ③二叉树的左右子树可任意交换; ④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A)①②③B)②③④C)②④D)①④ 5.由3 个结点可以构造出多少种不同的二叉树?() A)2 B)3 C)4 D)5 6.引入二叉线索树的目的是()

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

习题六树和二叉树 一、单项选择题 1.以下说法错误的是() A. 树形结构的特点是一个结点可以有多个直接前趋 B. 线性结构中的一个结点至多只有一个直接后继 C. 树形结构可以表达(组织)更复杂的数据 D. 树(及一切树形结构)是一种”分支层次”结构 E. 任何只含一个结点的集合是一棵树 2. 下列说法中正确的是() A. 任何一棵二叉树中至少有一个结点的度为2 B. 任何一棵二叉树中每个结点的度都为2 C. 任何一棵二叉树中的度肯定等于2 D. 任何一棵二叉树中的度可以小于2 3. 讨论树、森林和二叉树的关系,目的是为了() 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+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A.250 B .500 C .254 D .505 E .以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为() A. 不确定 B . 2n C . 2n+1 D . 2n-1 9.二叉树的第I 层上最多含有结点数为() I I-1 I-1 I A.2I B .2 I-1 -1 C .2 I-1 D .2 I -1 10.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+1 11. 利用二叉链表存储树,则根结点的右指针是()。 A.指向最左孩子 B .指向最右孩子 C .空D .非空 12.已知一棵二叉树的前序遍历结果为为()。 A.CBEFDA B .FEDCBA 13.已知某二叉树的后序遍历序列是()。 ABCDEF中序遍历结果 为 C .CBEDFA D dabec, 中序遍历序列是 CBAEDF则后序遍历的结 果 .不定 debac , 它的前序遍历是

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

第六章习题 1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。 2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。 3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,n k个度为k的结点,则该树中有多少个叶子结点并证明之。 4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个? 6.给出满足下列条件的所有二叉树: ①前序和后序相同 ②中序和后序相同 ③前序和后序相同 7.n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child域有多少个? 8.画出与下列已知序列对应的树T: 树的先根次序访问序列为GFKDAIEBCHJ; 树的后根次序访问序列为DIAEKFCJHBG。

9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为: 0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10 请为这8个字母设计哈夫曼编码。 10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因. 11. 画出和下列树对应的二叉树: 12.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。 13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。 14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。 15.分别写出算法,实现在中序线索二叉树中查找给定结点*p在中序序列中的前驱与后继。16.编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。

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

04树和二叉树 【单选题】 1. 下列选项中不属于树形结构逻辑特征的是(C)。 A、有的结点有多个直接后继 B、有的结点没有直接后继 C、有的结点有多个直接前驱 D、有的结点没有直接前驱 2. 下列叙述中错误的是(B)。 A、树的度与该树中结点的度的最大值相等 B、二叉树就是度为2的有序树 C、有5个叶子结点的二叉树中必有4个度为2的结点 D、满二叉树一定是完全二叉树 3. 一棵二叉树中第6层上最多有(C)个结点。 A、2 B、31 C、32 D、64 4. 一棵高为k的二叉树最少有(B)个结点。 A、k-1 B、k C、k+1 D、2k-1 E、2k-1 5. 一棵高为k的二叉树最多有(C)个结点。 A、k+1 B、2k-1 C、2k-1 D、2k E、2k+1 6. 一棵高为k的完全二叉树最少有(B)个结点。 A、2k-1-1 B、2k-1 C、2k-1 D、2k 7. 一棵高为k的完全二叉树最多有(C)个结点。 A、2k-1-1 B、2k-1 C、2k-1 D、2k 8. 一棵度为3的树中,度为3的结点有2个,度为2的结点有2个,度为1的结点有2个,则度为0的结点有(D)个。 A、4 B、5 C、6 D、7 9. 含1000个结点的完全二叉树的高度为(B)。 A、9 B、10 C、11 D、12 10. 设完全二叉树T中含有n个结点,对这些结点从0开始按层序进行编号,若编号为i的结点有左孩子,则左孩子的编号为(D)。 A、2(i-1) B、2i-1 C、2i D、2i+1 E、2(i+1) 11. 已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为(D)。 A、-A+B*C/DE B、-A+B*CD/E C、-+*ABC/DE D、-+A*BC/DE

数据结构第六章树和二叉树练习及答案

一、选择题 1、设T是一棵树,T’是对应于x的二叉树,则T的先根次序遍历和T’的()次序遍历相同。 A、先根 B、中根 C、后根 D、以上都不是 2、 3、若二叉树的后序遍历序列为dabec,中序遍历序列为debac,则前序序列遍历为()。 A、acbed B、decab C、deabc D、cedba 4、具有35个结点的完全二叉树的深度为() A、5 B、6 C、7 D、8 5、将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子结点编号为() A、98 B、99 C、50 D、48 6、某二叉树的前序和后序序列正好相反,则该二叉树一定是()的二叉树。 A、空或只有一个结点 B、高度等于其结点数 C、任一结点无左孩子 D、任一结点无左孩子 7、二叉树在线索化后,仍不能有效求解的问题是() A、先根线索二叉树中求先根后继 B、中根线索二叉树中求中根后继 C、中根线索二叉树中求中根前驱 D、后根线索二叉树中求后根后继 8、在线索化二叉树中,t所指结点没有左子树的充足条件是() A、t-lchild==NULL B、t->ltag==1 C、t->ltag==1&&t->lchild==NULL D、以上都不对 9、设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为() A、2h B、2h-1 C、2h+1 D、h+1 10、深度为5的二叉树至多有()个结点。 A、16 B、32 C、31 D、10 11、在一非空二叉树的中序遍历序列中,根结点的右边() A、只有右子树上的所有结点 B、只有右子树上的部分结点 C、只有左子树上的所有结点 D、只有左子树上的部分结点 12、树最适合用来表示() A、有序数据元素 B、无序数据元素 C、元素之间具有分支层次关系的数据 D、元素之间无联系的数据 13、任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序() A、不发生改变 B、发生改变 C、不能确定 D、以上都不对 14、设n,m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是() A、n在m右方 B、n是m祖先 C、n在m左方 D、n是m子孙 15、线索二叉树是一种()结构 A、逻辑 B、逻辑和存储 C、物理 D、线性 16、森林的后根遍历序列与其对应二叉树的()遍历序列一致。 A、先根 B、后根 C、中根 D、不可能 二、填空题 1、由一棵二叉树后序序列和(中序)可唯一确定这棵二叉树。 2、含有n个结点的二叉树用二叉链表表示时,有(N+1)个空链域。 3、有m个叶子结点的哈夫曼树有(2*M-1)个结点。

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

一、选择题 1 .已知一算术表达式的中缀形式为 A+B*C-D/E ,后缀形式为ABC*+DE/-,其前缀形式 为() ④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A .①②③ B .②③④ C .②④ D .①④ 6. 设森林F 对应的二叉树为 B ,它有m 个结点,B 的根为p,p 的右子树结点个数为 n,森 林F 中第一棵树的结点个数是( ) A . m-n B . m-n-1 C . n+1 D .条件不足,无法确定 【南京理工大学 2000 一、17 (1.5 分)】 7. 树是结点的有限集合, 它((1 ))根结点,记为T 。其余结点分成为 m (m>0 )个((2)) 的集合T1 , T2 ,…,T m ,每个集合又都是树,此时结点 T 称为Ti 的父结点,Ti 称为T 的子结点(1 < i < m )。一个结点的子结点个数称为该结点的 ((3))。二叉树与树是两个 不同的概念,二叉树也是结点的有限集合,它 ((4 ))根结点。可以把树的根结点的层数定 义为1,其他结点的层数等于其父结点所在层数加上 1。令T 是一棵二叉树,Ki 和Kj 是T 中子结点数小于 2的结点中的任意两个,它们所在的层数分别为入 Ki 和入Kj ,当关系式丨入 Ki-入Kj | < 1 一定成立时,则称 T 为一棵((5))。供选择的答案: (1 )⑷A.有0个或1个 B.有0个或多个 C.有且只有一个 D.有1个或1 个以上 C.允许叶结点相交 D .允许树枝结点相交 C.次数 D.序 C.平衡树 D.完全树【上海海运学院 1999 、2(5分)】 10个度为2的结点,5个度为1的结点,则度为0的结点个数是() C . 15 D .不确定 【北京工商大学 2001 .7(3分)】 第六章 树和二叉树 (2) A. 互不相交 B.允许相交 (3) A. 权 B.维数 (5) A. 丰满树 B.查找树 A . -A+B*C/DE -+A*BC/DE 【北京航空航天大 学 B. -A+B*CD/E -+*ABC/DE D. 1999 一、3 (2 分)】 2 .算术表达式a+b* (c+d/e )转为后缀表达式后为( A . ab+cde/* B . abcde/+*+ C . abcde/*++ 3. 设有一表示算术表达式的二叉树(见下图) , 它所表示的算术表达式是( ) 【南京理工大学1999 A. A*B+C/(D*E )+(F-G ) C. (A*B+C )/(D*E+ 4. 设树T 的度为4, 子数为( ) A . 5 【南京理工大学 (F-G )) 其中度为1 , B . 6 2000 、20 (2分)】 B. (A*B+C)/(D*E)+(F-G) D. A*B+C/D*E+F-G 2, 3和4的结点个数分别为 5. 在下述结论中,正确的是( ①只 有一个结点的二叉树的度为 交换; C . 7 (1.5分)】 )【南京理工大学 1999 (1分)】 0;②二叉树的度为2 ; ③二叉树的左右子树可任意 8.若一棵二叉树具有 B . 11

数据结构第6章二叉树自测题参考答案

第6章树和二叉树自测卷解答 一、下面是有关二叉树的叙述,请判断正误 (√)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. 具有12个结点的完全二叉树有5个度为2的结点。 最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5 二、填空(每空1分,共15分) 1.由3个结点所构成的二叉树有5种形态。 2. 一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。 注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。 3.一棵具有257个结点的完全二叉树,它的深度为9。 (注:用? log2(n) ?+1= ? 8.xx ?+1=9 4.设一棵完全二叉树有700个结点,则共有350个叶子结点。 答:最快方法:用叶子数=[n/2]=350 5. 设一棵完全二叉树具有1000个结点,则此完全二叉树有500个叶子结点,有499个度为2的结点,有1个结点只有非空左子树,有0个结点只有非空右子树。 答:最快方法:用叶子数=[n/2]=500 ,n2=n0-1=499。另外,最后一结点为2i属于左叶子,右叶子是空的,所以有1个非空左子树。完全二叉树的特点决定不可能有左空右不空的情况,所以非空右子树数=0. 6. 一棵含有n个结点的k叉树,可能达到的最大深度为n,最小深度为2。 答:当k=1(单叉树)时应该最深,深度=n(层);当k=n-1(n-1叉树)时应该最浅,深度=2(层),但不包括n=0或1时的特例情况。教材答案是“完全k叉树”,未定量。) 7.二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。因而二叉树的遍历次序有六种。最常用的是三种:前序法(即按N L R次序),后序法(即按L R N次序)和中序法(也称对称序法,即按L N R次序)。这三种方法相互之间有关联。若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是 F E G H D C B。 解:法1:先由已知条件画图,再后序遍历得到结果; 法2:不画图也能快速得出后序序列,只要找到根的位置特征。由前 序先确定root,由中序先确定左子树。例如,前序遍历BEFCGDH中, 根结点在最前面,是B;则后序遍历中B一定在最后面。 法3:递归计算。如B在前序序列中第一,中序中在中间(可知左 右子树上有哪些元素),则在后序中必为最后。如法对B的左右子树同

数据结构习题集第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.2h B.2h-1 C.2h+1 D.h+1 6.如果T2是由有序树T1转换而来的二叉树,那么T1中结点的先根遍历就是T2中结点 的遍历。 A.先序 B.中序 C.后序 D.层次序 7.某二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树一定是。 A.空或只有一个结点 B.完全二叉树 C.二叉排序树 D.高度等于其结点数

8. 如下图4-2所示的T2是由森林T1转化而来的二叉树,那么森林T1有 个叶子结点。 A.4 B.5 C.6 D.7 图4-2 一棵二叉树 9. 按照二叉树的定义,具有3个结点的二叉树有 种。 A.3 B.4 C.5 D.6 10. 在一非空二叉树的中序遍历序列中,根结点的右边 。 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)这棵树的叶子结点是 ;

数据结构与算法第六章课后答案第六章 树和二叉树

第6章 树和二叉树(参考答案) 6.1 (1)根结点a 6.2 三个结点的树的形态: 三个结点的二叉树的形态: (1) (1) (2) (4) (5) 6.3 设树的结点数是n ,则 n=n0+n1+n2+……+nm+ (1) 设树的分支数为B ,有 n=B+1 n=1n1+2n2+……+mnm+1 (2) 由(1)和(2)有: n0=n2+2n3+……+(m-1)nm+1 6.4 (1) k i-1 (i 为层数) (2) (n-2)/k+1 (3) (n-1)*k+i+1 (4) (n-1)%k !=0; 其右兄弟的编号 n+1 6.5(1)顺序存储结构 注:#为空结点

6.6 (1) 前序 ABDGCEFH (2) 中序 DGBAECHF (3) 后序 GDBEHFCA 6.7 (1) 空二叉树或任何结点均无左子树的非空二叉树 (2) 空二叉树或任何结点均无右子树的非空二叉树 (3) 空二叉树或只有根结点的二叉树 6.8 int height(bitree bt) // bt是以二叉链表为存储结构的二叉树,本算法求二叉树bt的高度 { int bl,br; // 局部变量,分别表示二叉树左、右子树的高度 if (bt==null) return(0); else { bl=height(bt->lchild); br=height(bt->rchild); return(bl>br? bl+1: br+1); // 左右子树高度的大者加1(根) } }// 算法结束 6.9 void preorder(cbt[],int n,int i); // cbt是以完全二叉树形式存储的n个结点的二叉树,i是数 // 组下标,初始调用时为1。本算法以非递归形式前序遍历该二叉树 { int i=1,s[],top=0; // s是栈,栈中元素是二叉树结点在cbt中的序号 // top是栈顶指针,栈空时top=0 if (n<=0) { printf(“输入错误”);exit(0);} while (i<=n ||top>0) { while(i<=n) {visit(cbt[i]); // 访问根结点 if (2*i+1<=n) s[++top]=2*i+1; //若右子树非空,其编号进栈 i=2*i;// 先序访问左子树 } if (top>0) i=s[top--]; // 退栈,先序访问右子树 } // END OF while (i<=n ||top>0) }// 算法结束 //以下是非完全二叉树顺序存储时的递归遍历算法,“虚结点”用‘*’表示void preorder(bt[],int n,int i); // bt是以完全二叉树形式存储的一维数组,n是数组元素个数。i是数 // 组下标,初始调用时为1。 { if (i<=n && bt[i]!=’*’) { visit(bt[i]); preorder(bt,n,2*i); preorder(bt,n,2*i+1); }// 算法结束 6.10 int equal(bitree T1,bitree T2); // T1和T2是两棵二叉树,本算法判断T1和T2是否等价 // T1和T2都是空二叉树则等价 // T1和T2只有一棵为空,另一棵非空,则不等价 // T1和T2均非空,且根结点值相等,则比较其左、右子树

实用数据结构基础第四版课后习题

一、判断题 (第一章绪论) 1.数据元素是数据的最小单元。 答案:错误 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的基本运算集构成的整体。 答案:错误 3.数据的存储结构是数据元素之间的逻辑关系和逻辑结构在计算机存储器内的映像。 答案:正确 4.数据的逻辑结构是描述元素之间的逻辑关系,它是依赖于计算机的。 答案:错误 5.用语句频度来表示算法的时间复杂度的最大好处是可以独立于计算机的软硬件,分析算法的时间 答案:正确 (第二章线性表) 6.取顺序存储线性表的第i个元素的时间同i的大小有关。 答案:错误 7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。 答案:正确 8.线性链表的每一个节点都恰好包含一个指针域。 答案:错误 9.顺序存储方式的优点的存储密度大,插入和删除效率不如练市存储方式好。 答案:正确 10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。答案:错误 (第三章栈) 11.栈是一种对进栈和出栈作了限制的线性表。 答案:错误 12.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN表示栈满。 答案:错误 13.链栈与顺序栈相比,其特点之一是通常不会出现满栈的情况。 答案:正确 14.空栈就是所有元素都为0上的栈。 答案:错误 15.将十进制数转换为二进制数是栈的典型应用之一。 答案:正确 (第四章队列) 16.队列式限制在两端进行操作的线性表。 答案:正确 17.判断顺序队列为空的标准是头指针和尾指针都指向同一结点。 答案:错误 18.在循环链列队中无溢出现像。 答案:错误 19.在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。 答案:正确

数据结构第六章 树和二叉树课后习题答案

第六章课后习题 6、1、各层的结点数目是:K 2、编号为n的结点的双亲结点是:<=(n-2)/k的最大整数 3、编号为n的结点的第i个孩子结点编号是:k*(n-1)+1+i 4、编号为n的结点有右兄弟的条件是:(n-1)能被k整除 右兄弟的编号是:n+1. 7、1、先序序列和中序序列相同:空二叉树或没有左子树的二叉树。 2、中序序列和后序序列相同:空二叉树或没有右子树的二叉树。 3、先序序列和后序序列相同:空二叉树或只有根的二叉树。 9、中序序列:BDCEAFHG和后序序列:DECBHGFA的二叉树为: A B F C G D E H 先序序列:ABCDEFGH 算法设计: 3、typedef struct { int data[100]; int top; }seqstack; seqstack *s; Perorder(char a[],int n) { int i=1,count=1; s->top=-1;

if(n==0)return(0); else { if(I<=n) { s->top++; s->data[s->top]=a[I]; } while(countdata[s->top]); count++; s->top--; if(s->data[s->top]);==a[i]) { printf(“%c”,s->data[s->top]); count++; s->top--; } if((2*i+1)top++; s->data[s->top]=a[i+1]; s->top++; s->data[s->top]=a[i]; } else if(a*itop++; s->data[s->top]=a[i]; } else if(i/2%2==1)i=i/2/2+1; else i=i/2+1; } } } main() { char A[]=“kognwyuvb”; int n=strlen(A); s=(seqstack *)malloc(sizeof(seqstack)); printf(“\n”); Perorder(A,n);

第四章 树和二叉树 说课教案

第五章树和二叉树说课教案 姓名:仇环 单位:信息工程系 年级与科目:08级计算机应用《数据结构》 课题:树和二叉树 职称:讲师 教龄:1年 (各位老师下午好,我说课的题目是树和二叉树) 说课的内容包括: 一.教学大纲分析 二.教材分析 三、学情分析 四.教学目标 五、教学重点与难点 六、教学方法 七、教学过程 八、教学效果预测及教学后记 一、教学大纲分析: 高职高专教育的人才培养特征是高级技术应用型人才,具体到计算机专业来说,就是培养从事计算机产品生产、维修和编程和实际应用的技术人才。在计算机专业的课程体系中,《数据结构》不仅是一门重要的专业基础课程,而且是计算机程序设计重要的理论基础,更

是计算机等级、专升本等考试的必考课程之一。它在整个学科体系中具有重要作用,有着不可替代的地位。 本课程的教学不仅重视学生对理论知识的理解和掌握,锻炼学生抽象思维能力和想象能力,更注重实践动手的能力,要求学生能够设计出结构清晰、可读性好、运行效率高的算法,并能够用一种或多种计算机高级程序设计语言实现。学好这门课程,对培养学生程序设计的能力、设计算法的能力和运用计算机进行数据处理的能力有着深远的意义。 其前导课程为:《C语言程序设计》或《C++语言》。 二、教材分析 本教材属于“21世纪高职高专规划教材”,这套教材主要面向高职高专院校学生。教材内容力求体现以应用为主体,强调理论知识的理解和运用,实现专科教学以实践体系及技术应用能力培养为主的目标。 1、教材特点: 本教材的特点可总结为: (1)基础理论知识的阐述由浅入深、通俗易懂。内容的组织和编排以应用为主线,省略了一些理论推导和数学证明过程,淡化了算法的设计分析和复杂的时空分析。 (2)各章都配有应用举例,列举分析了很多实用的例子,且大多数算法都直接给出了相应的C语言程序,以便上机练习和实践。 (3)便于复习和掌握每章的重点,每章的起始处都给出了要点,并在每章结尾处给出了小结。 2、教材内容: 本书共分为8章。第一章叙述数据、数据结构、算法等基本概念。第2~6章分别讨论了线性表、栈和队列、串和数组、树和二叉树、图等的基本数据结构及其应用。第7章和第8章分别讨论了查找和排序的各种实现方法及其应用。因为此教材与我们通用的蔚学敏老师的《数据结构》(清华大学版)内容有一定的区别,所以在教材处理上参考了其他《数据结构》教材,对本教材进行了补充。我说课的内容是第五章第一节。在《数据结构》中,树这一章既是这门课程的难点也是该课程的重点。第一节的内容是对第五章内容的基础,对于第五章内容的学习有很重要的意义。 3、文献资料清单: 扩大学生的知识面并培养学生的自学能力,为学生的研究性学习和自主学习的开展提供下列文献资料清单:

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

第六章树和二叉树(下载后用阅读版式视图或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_l B.h C.2h-1 D. 2h 5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。 A. 2i B. 2i-l C. 2i+l D. 2i+2 6.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为( )。 A.3 B.4 C.5 D.6 7.深度为5的二叉树至多有( )个结点。 A. 31 B. 32 C. 16 D. 10 8.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。 A. 15 B. 16 C. 17 D. 47 9.题图6-1中,( )是完全二叉树,( )是满二叉树。 10.在题图6-2所示的二叉树中:

(1)A结点是 A.叶结点 B根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点 (2)J结点是 A.叶结点 B.根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点 (3)F结点的兄弟结点是 A.E B.D C.空 D.I (4)F结点的双亲结点是 A.A B.B C.C D.D (5)树的深度为 A.1 B.2 C.3 D.4 (6)B结点的深度为 A.1 B.2 C.3 D.4 (7)A结点所在的层是 A.1 B.2 C.3 D.4 11.在一棵具有35个结点的完全二叉树中,该树的深度为( )。 A.5 B.6 C.7 D.8 12. 一棵有124个叶结点的完全二叉树,最多有( )个结点。 A.247 B.248 C.249 D.250 13.用顺序存储的方法将完全二叉树中所有结点逐层存放在数组R[1…n]中,结点R[i]若 有左子树,则左子树是结点( )。 A. R[2i+l] B. R[2i] C.R[i/2] D. R[2i-1] 14.在一非空二叉树的中序遍历序列中,根结点的右边( )。 A.只有右子树上的所有结点 B.只有右子树上的部分结点 C.只有左子树上的部分结点 D.只有左子树上的所有结点 15.一棵度为m的树中,有n i个度为1的结点,有n2个度为2的结点……,有n m个度为m的结点,则该树的叶结点数为( )。 A. n1+n2+...+n m B. (m-l) n m+...+n2+1

相关文档
最新文档