数据结构复习题1
- 格式:doc
- 大小:50.00 KB
- 文档页数:4
第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()【中科院计算所 1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学 1999 一、1(2分)【武汉交通科技大学 1996 一、1( 4分)】4.一个算法应该是()。
【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.5. 下面关于算法说法错误的是()【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
【北方交通大学 2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学 2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()【北方交通大学 2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学 2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2)【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型()【中山大学 1999 一、3(1分)】A.栈 B.广义表 C.有向图 D.字符串14.以下数据结构中,()是非线性数据结构【中山大学 1999 一、4】A.树 B.字符串 C.队 D.栈15. 下列数据中,()是非线性数据结构。
数据结构复习题一、选择题1.数据结构被形式地定义为<D,R>,其中D是的有限集。
A 算法B 数据元素C 数据操作D 逻辑结构2.数据结构被形式地定义为<D,R>,其中R是的有限集.A 操作B 映像C 存储D 关系3.在数据结构的讨论中把数据结构从逻辑上分为()。
A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构4.链表表示线性表的优点是()A、便于随机存取B、花费的存储空间比顺序表少C、便于插入与删除5.用单链表表示的链式队列的队头在链表的()位置。
A.链头B.链尾C.链中6.线性表是具有n个()的有限序列(n≠0)A.表元素B.字符C.数据元素D.数据项7.采用线性链表表示一个向量时,要求占用的存储空间地址()。
A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续8.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动______个元素。
A.8B.63.5C.63D.79.若某链表中最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用______________存储方式最节省运算时间。
A单链表 B双链表C 单循环链表 D带头结点的双循环链表10.链表不具有的特点是____________.A可随机访问任一元素 B插入删除不需要移动元素C不必事先估计存储空间 D所需空间与线性表长度成正比11.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。
A. O(n)B. O(log2n)C. O(1)D. O(n2)12.带头结点的单链表first为空的判定条件是:A. first == NULL;B. first->next == NULL;C. first->next == first;D. first != NULL;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。
(完整版)数据结构复习题(附答案)⼀、算法设计题(每题15分,共60分)答题要求:①⽤⾃然语⾔说明所采⽤算法的思想;②给出每个算法所需的数据结构定义,并做必要说明;③写出对应的算法程序,并做必要的注释。
1、有⼀个带头结点的单链表,每个结点包括两个域,⼀个是整型域info,另⼀个是指向下⼀个结点的指针域next。
假设单链表已建⽴,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留⼀个。
3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个⼈按顺时针⽅向围坐成⼀圈,现从第s个⼈开始按顺时针⽅向报数,数到第m个⼈出列,然后从出列的下⼀个⼈重新开始报数,数到第m的⼈⼜出列,…,如此重复直到所有的⼈全部出列为⽌。
现要求采⽤循环链表结构设计⼀个算法,模拟此过程。
4、编程实现单链表的就地逆置。
23.在数组 A[1..n]中有n个数据,试建⽴⼀个带有头结点的循环链表,头指针为h,要求链中数据从⼩到⼤排列,重复的数据在链中只保存⼀个.5、设计⼀个尽可能的⾼效算法输出单链表的倒数第K个元素。
3、假设以I和O分别表⽰⼊栈和出栈操作。
栈的初态和终态均为空,⼊栈和出栈的操作序列可表⽰为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为⾮法序列。
(15分)(1)下⾯所⽰的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出⼀个算法,判定所给的操作序列是否合法。
若合法,返回true,否则返回false(假定被判定的操作序列已存⼊⼀维数组中)。
5、设从键盘输⼊⼀整数的序列:a1, a2, a3,…,an,试编写算法实现:⽤栈结构存储输⼊的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。
算法应对异常情况(⼊栈满等)给出相应的信息。
设有⼀个背包可以放⼊的物品重量为S,现有n件物品,重量分别为W1,W2,...,W n。
第一章一、单项选择题1. 数据结构是指()。
A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。
A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3. 树形结构是数据元素之间存在一种()。
A.一对一关系B.多对多关系C.多对一关系D.一对多关系4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为()。
for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O( )C.O(n)D.O( )5. 算法分析的目的是(1),算法分析的两个主要方面是(2)。
A.找出数据结构的合理性B.研究算法中的输入和输出关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2) A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性6. 计算机算法指的是(1),它具备输入,输出和(2)等五个特性。
(1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。
A.低 B.高 C.相同 D.不好说8. 数据结构作为一门独立的课程出现是在()年。
A.1946B.1953C.1964D.19689. 数据结构只是研究数据的逻辑结构和物理结构,这种观点()。
A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10. 计算机内部数据处理的基本单位是()。
A.数据B.数据元素C.数据项D.数据库二、填空题1. 数据结构按逻辑结构可分为两大类,分别是______________和_________________。
数据结构试卷试题及答案一、选择题(每题5分,共40分)1. 数据结构是研究数据元素的()A. 存储结构B. 处理方法C. 逻辑结构D. 所有以上内容答案:D2. 在数据结构中,通常采用()方式来表示数据元素之间的逻辑关系。
A. 顺序存储结构B. 链式存储结构C. 索引存储结构D. 散列存储结构答案:B3. 下面哪一个不是栈的基本操作?()A. 入栈B. 出栈C. 判断栈空D. 获取栈顶元素答案:D4. 下面哪一个不是队列的基本操作?()A. 入队B. 出队C. 判断队列空D. 获取队头元素答案:D5. 下面哪一个不是线性表的特点?()A. 有且只有一个根节点B. 每个节点最多有一个前驱和一个后继C. 数据元素类型相同D. 数据元素类型可以不同答案:D6. 在下列哪种情况中,使用链式存储结构比顺序存储结构更合适?()A. 数据元素经常插入和删除B. 数据元素大小不固定C. 数据元素个数不确定D. 所有以上情况答案:D7. 下面哪一个不是树的遍历方式?()A. 前序遍历B. 中序遍历C. 后序遍历D. 翻转遍历答案:D8. 在下列哪种情况中,使用散列存储结构比其他存储结构更合适?()A. 数据元素个数较少B. 数据元素查找频繁C. 数据元素插入和删除频繁D. 数据元素大小不固定答案:B二、填空题(每题5分,共30分)9. 栈是一种特殊的线性表,它的插入和删除操作都限定在表的一端进行,这一端称为______。
答案:栈顶10. 队列是一种特殊的线性表,它的插入操作在表的一端进行,这一端称为______,而删除操作在另一端进行,这一端称为______。
答案:队尾、队头11. 二叉树中的节点包括______和______。
答案:根节点、子节点12. 在图的存储结构中,邻接矩阵表示法用______个一维数组来表示图中各个顶点之间的关系。
答案:两个13. 散列存储结构中,关键码到存储地址的映射方法称为______。
第3章栈和队列一选择题1. 对于栈操作数据的原则是( B. 后进先出)。
2. 在作进栈运算时,应先判别栈是否(①B. 满),在作退栈运算时应先判别栈是否(②A. 空)。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③B. n)。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 (④D. 栈底)分别设在这片内存空间的两端,这样,当(⑤C. 两个栈的栈顶在栈空间的某一位置相遇)时,才产生上溢。
3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i (1<=i<=n)个元素是(B. n-i+1)。
4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是(D. 不确定的)。
5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi是(D. 不确定)。
6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?(C. 3 4 6 5 2 1)A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 67. 设栈的输入序列是1,2,3,4,则(D. 4,3,1,2,)不可能是其出栈序列。
A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,8. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是(B.5 4 1 3 2)。
9. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是(D. 3 2 1 5 4)。
10. 某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是(D. d, c,a,b)。
A. a,c,b,dB. b, c,d,aC. c, d,b, aD. d, c,a,b11. 设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为(D. cabdef)。
一、是非题1.数据结构概念包括数据之间的逻辑结构,数据在计算机中的存储方式和数据的运算三个方面。
.......................( T )2.线性表的逻辑顺序与物理顺序总是一致的........( F )3.线性表中的每个结点最多只有一个前驱和一个后继。
......( T )4.线性的数据结构可以顺序存储,也可以链接存储。
非线性的数据结构只能链接存储。
.......................( F )5.栈和队列逻辑上都是线性表。
..........................( T )6.单链表从任何一个结点出发,都能访问到所有结点........( F )7.单链表形式的队列,头指针F指向队列的第一个结点,尾指针R指向队列的最后一个结点。
.................................................( T )8.在用单链表表示的链式队列中,队头在链表的链尾位置。
....( F )9.多维数组是向量的推广。
..............................( T )10.栈是一种先进先出的线性表。
....( F )11.凡是递归定义的数据结构都可以用递归算法来实现它的操作。
......( T )12.设串S的长度为n,则S的子串个数为n(n+1)/2。
...........( F )13.一般树和二叉树的结点数目都可以为0。
................( F )14.按中序遍历二叉树时,某结点的直接后继是它的右子树中第1个被访问的结点。
....( T )15.后序序列和中序序列能唯一确定一棵二叉树。
....( T )16.对于一棵具有n个结点,其高度为h的二叉树,进行任—种次序遍历的时间复杂度为O(n) .............( T )17.网络的最小代价生成树是唯一的。
...( T )18.图的拓扑有序序列不是唯一的。
数据结构考试试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用什么类型的数据结构来实现?A. 栈B. 队列C. 数组D. 链表答案:C2. 下列选项中,哪一个不是二叉树的性质?A. 任意节点的左子树和右子树的深度可能不同B. 任意节点的左子树和右子树的深度相同C. 任意节点的左子树和右子树的节点数可能不同D. 任意节点的左子树和右子树的节点数相同答案:B3. 哈希表的冲突解决方法不包括以下哪种?A. 开放定址法B. 链地址法C. 线性探测法D. 排序法答案:D4. 以下哪种排序算法的时间复杂度最低?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序答案:B5. 在图的遍历算法中,深度优先搜索(DFS)使用的栈是:A. 系统栈B. 显式栈C. 隐式栈D. 以上都不是答案:B6. 以下哪种数据结构可以有效地实现稀疏矩阵的存储?A. 顺序存储B. 链表C. 散列D. 邻接矩阵答案:C7. 在二叉搜索树中,插入一个新节点后,树的平衡因子可能为:A. -2B. 0C. 2D. 3答案:A8. 堆数据结构中,父节点的值总是大于其子节点的值,这种堆被称为:A. 最小堆B. 最大堆C. 完全二叉树D. 满二叉树答案:B9. 以下哪个算法不是动态查找表的算法?A. 直接查找B. 二分查找C. 斐波那契查找D. 哈希查找答案:A10. 在图的遍历算法中,广度优先搜索(BFS)使用的栈是:A. 系统栈B. 显式栈C. 隐式栈D. 以上都不是答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种______结构,遵循后进先出(LIFO)的原则。
答案:线性2. 一个具有n个顶点的无向图的边数最多为______。
答案:n*(n-1)/23. 快速排序算法的时间复杂度在最坏情况下为______。
答案:O(n^2)4. 在哈希表中,如果一个关键字的哈希地址已经被占用,则需要进行______。
第1章绪论一、选择题1.数据结构被形式定义为(D,S),其中D是(B)的有限集合,S是D上的(H)有限集合。
A、算法B、数据元素C、数据操作D、逻辑关系E、操作F、映象G、存储H、关系2.数据结构是一门研究非数值计算的程序设计问题中计算机的(A)以及它们之间的(B)和运算的学科。
(1)A、操作对象B、计算方法C、逻辑存储D、数据映象(2)A、结构B、关系C、运算D、算法3.算法分析的目的是(D),算法分析的二个主要方面是(C)。
A、给出数据结构的合理性B、研究算法中输入输出的关系C、空间复杂性和时间复杂性D、分析算法的效率以求改进E、正确性和简明性F、分析算法的易懂性和文档性4.在数据结构中,从逻辑上可以把数据结构分成(C)。
A、动态和静态结构B、紧凑接和非紧凑结构C、线性与非线性结构D、内部结构和外部结构5.计算机算法指的是(C),它必具备输入、输出和(E)5 个特性。
A、计算方法B、排序方法C、解决问题的有限运算序列D、可行性、可移植性和可扩充性E、可行性、确定性和有穷性6.线性表的顺序存储结构是一种(A)的存储结构,线性表的链式存储结构是一种(B)。
A、随机存取B、顺序存取C、索引存取D、散列存取7.算法的时间复杂度取决于(A)。
A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态8.线性表若采用链表存储结构时,要求内存中可用存储单元的地址(D)。
A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续不连续都可以9.在以下的叙述中,正确的是(B)。
A、线性表的顺序存储结构优于链式存储结构B、二维数组是它的每个数据元素为一个线性表的线性表C、栈的操作方式是先进先出D、队列的操作方式是先进后出10.根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式。
以下解释错误的是 (A )。
A、集合中任何两个结点之间都有逻辑关系但组织形式松散B、线性结构中结点按逻辑关系依次排列形成一条"锁链"C、树形结构具有分支、层次特性,其形态有点像自然界中的树D、图状结构中的各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接11.以下说法正确的是(D )。
数据结构复习题
1.已知一个顺序表L,其中的元素按值非递减有序排列。
设计一个算法实现:在顺序表中插
入一个元素x后保持该顺序表仍按值非递减有序排列。
要求算法的空间复杂度为O(1)。
void ins(list &L , elem x)
{int i=0,j;
while (i<L.len && x>=L.data[i]) i++;
for (j=L.len-1 ; j>=i ;j--) L.data[j+1]=L.data[j];
L.data[i]=x;
L.len++;
}
2.设计一个算法从顺序表L中删除所有值为x的元素。
要求算法的空间复杂度为O(1)。
void del(list &L )
int i=0 , j;
while( i<L.len && L.data[i]!=x ) i++;
for ( j=i+1 ; j<L.len ; j++ )
if (L.data[j]!=x )
{ L.data[i]=L.data[j] ; i++ ; }
L.len=i; )
}
3.有一个单链表(数据域的值可能重复),其中头指针为head,设计一个算法计算数据域值
x的结点个数。
int count(SNode *head , elem x)
{SNode *p;
int n=0;
p=head;
while(p!=NULL)
{ if (p->data==x ) n++;
p=p->next; }
return n;
}
4.设计一个在带头结点的单链表中删除一个最小值结点的高效算法。
void del(SNode *h)
{SNode *p1=*minp1=h , *p=p1->next , *minp=p ;
while(p!=NULL)
{if (p->data<minp->data)
{minp=p;minp1=p1;}
p1=p;
p=p->next; }
minp1->next=minp->next;
free(minp);
}
5.编制一个函数conversion( )满足下列要求:对于输入的任意一个非负十进制整数,打印
输出其等值的八进制数。
void conversion( )
{ int n , e ,top=0 ,s[Max];
Scanf(“%d”, &n);
While(n)
{ s[top++]=n%8;
N=n/8; }
While(top!=0)
{e=s[--top];
Printf(“%d”,e); }
}
6.. 设一棵二叉树以二叉链表为存储结构,设计一个算法实现二叉树的双序遍历。
二叉树
的双序遍历是指:对于二叉树的每个结点,先访问这个结点,再按双序遍历它的左子树;
然后再一次访问这个结点,再按双序遍历它的右子树。
void double(Node *t)
{ if (t!=NULL)
{ printf(“%c”, t->data);
double( t->lchild );
printf(“%c”, t->data);
double( t->rchild );}
}
7.有一个不带头结点的单链表L(至少有1个结点),其头指针为head,设计一个算法将L
逆置。
即最后一个结点变为第一个结点,原来倒数第二个结点变成第二个结点,依此类推。
void inv(SNode &L)
{SNode *p ,*q ,*r;
p=L;
q=p->next;
while(q!=NULL)
{r=q->next;
q->next=p;
p=q; q=r; }
L->next=NULL;
L=p;
}
8.假设一个算术表达式中包含圆括弧、方括弧和花括弧三种类型的括弧,编写一个判别表
达式中括弧是否正确配对的函数
#define m0 100 /*m0为算术表达式中最多字符个数*/
correct(exp,tag)
char exp[m0];
int tag;
{char st[m0];
int top=0, i=1;
tag=1;
while (i<=m0 && tag)
{if (exp[i]= = …(…||exp[i]= =‟[…||exp[i]= =‟{…)/*遇到…(…、‟[…或‟{…,则将其入栈*/
{top++;
st[top]=exp[i];
}
if (e xp[i]= =‟)‟ ) /*遇到‟)‟ ,若栈顶是…(…,则继续处理,否则以不配对返回*/
if(st[top]= =…(… ) top--;
else tag=0;
if (exp[i]= =‟ ]‟ ) /*遇到‟ ]‟ ,若栈顶是…[…,则继续处理,否则以不配对返回*/
if(st[top]= =…[ …] top--;
else tag=0;
if (exp[i]= =‟}‟ ) /*遇到‟ }‟ ,若栈顶是…{…,则继续处理,否则以不配对返回*/
if(st[top]= =…{… top--;
else tag=0;
i++;
}
if(top>0)tag=0; /*若栈不空,则不配对*/
if( tag ) printf( “YES”);
else printf( “NO” );
}
9.设一棵二叉树以二叉链表为存储结构,设计一个算法,计算二叉树中所有结点的数目。
int count(Node *t)
{int n1,n2;
if (t==NULL) return 0;
else
{n1=count(t->lchild);
n2=count(t->rchild);
return (n1+n2+1); }
}
10.设一棵二叉树以二叉链表为存储结构,设计一个算法,计算二叉树中结点度为1的结点
数目。
int count(Node *t)
{int n1 , n2 , n=0;
if (t==NULL ) return 0;
else if ((t->lchild!=NULL && t->rchild!=NULL) ||
(t->rchild!=NULL && t->lchild!=NULL)) n=1;
n1=count(t->lchild);
n2=count(t->rchild);
return (n1+n2+n);
}
11.设一棵二叉树采用顺序存储结构,设计一个算法判断一棵二叉树是否为完全二叉树。
int full(char *a)
{int i;
for(i=1 ; i<Max ; i++)
if (a[i]==‘’) return 0;
return 1;
}
12.设一棵二叉树以二叉链表为存储结构,设计一个算法释放该二叉树所占用的全部存储空
间。
void del(Node *t)
{ if(t!=NULL)
{del(t->lchild);
del(t->rchild);
free(t); }
}
13.试设计一个判断两棵二叉树是否相似的算法。
所谓二叉树t1和t2是相似的指的是t1和
t2都是空的二叉树;或者t1和t2的根结点是相似的,t1的左子树和t2的左子树是相似的且t1的右子树与t2的右子树是相似的。
int true(Node *t1 ,Node *t2)
{int yes1 ,yes2;
if (t1==NULL && t2==NULL) return 1;
else if (t1==NULL || t2==NULL) return 0;
else
{yes1=true(t1->lchild ,t2->lchild);
yes2=true(t1->rchild ,t2->rchild);
return (yes1 && yes2);}
}
14.一棵二叉树以二叉链表为存储结构,设计一个算法将二叉树所有结点的左、右子树相互
交换。
void convert(NODE *t)
{ NODE *temp;
if(t!=NULL)
{ if(t->lchild!=NULL || t->rchild!=NULL)
{ temp=t->lchild;
t->lchild=t->rchild;
t->rchild=temp; }
convert(t->rchild);
convert(t->lchild); }
}。