二叉树的左右子树交换

合集下载

二叉树的左右子树交换(C%2B%2B)

二叉树的左右子树交换(C%2B%2B)
*输 出:指向二叉树根结点的指针
*后置条件:二叉树不变
*/
template<class T>
BiNode<T>* BiTree<T>::Getroot( )
{
return root;
}
/*
*前置条件:二叉树已存在
*输 入:无
*功 能:前序遍历二叉树
*输 出:二叉树中结点的一个线性排列
*输 入:无
*功 能:释放二叉链表中各结点的存储空间
*输 出:无
*后置条件:二叉树不存在
*/
template<class T>
BiTree<T>::~BiTree(void)
{
Release(rooห้องสมุดไป่ตู้);
}
/*
*前置条件:二叉树已存在
*输 入:无
*功 能:获取指向二叉树根结点的指针
root->rchild->data=m;
}
}
void main()
{
BiTree<string> bt; //创建一棵树
BiNode<string>* root = bt.Getroot( ); //获取指向根结点的指针
cout<<"------前序遍历------ "<<endl;
void PreOrder(BiNode<T> *root); //前序遍历二叉树
void jiaohuan(BiNode<T> *root);
private:

南理工数据结构往年试题

南理工数据结构往年试题

A. 55
B. 68
C. 59 D.28
2. 无向图 G=(V,E),其中:V={ a,b,c,d,e,f} , E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行广度优先遍历,得到的顶
点序列正确的是( )
A. a,ቤተ መጻሕፍቲ ባይዱ,e,c,d,f
B. a,c,f,e,b,d C. a,e,b,c,f,d
6.设哈希表长为 14,哈希函数是 H(key)=key%11,表中已有数据的关键字为 15,38,61,84 共四个, 现要将关键字为 26 的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是( )
A8 B3 C2 D9 7.在一个单链表中,若要删除 p 所指结点的后继结点,则执行( )。
键字的个数是 (2) 。
(1) A 6 B 5
C4 D 3
(2) A 4 B 3
C2 D 1
11.已知四个元素 1,2,3,4 依次进栈,进栈时可出栈,下面那一种出栈顺序是不正确的( )
A. 1432 B. 2341 C. 3142 D. 3421 12.队列操作的原则是( )。
A. 先进先出 B. 后进先出 C. 只能进行插入 D. 只能进行删除
A. p=p->next; p->next=p->next->next B.free(p->next) C.p=p->next->next;
D.p->next=p->next->next 8. 关于下面程序不正确的说法是( )
pb=pc=-1;
for (int k=0; k<n; k++) if (A[k]>0) B[++pb]=A[k];

2022年南京航空航天大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年南京航空航天大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年南京航空航天大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。

A.j=r[j].nextB.j=j+lC.j=j->nextD.j=r[j]->next2、从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。

A.插入B.选择C.希尔D.二路归并3、链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比4、向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()。

A.h->next=sB.s->next=hC.s->next=h;h->next=sD.s->next=h-next;h->next=s5、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。

A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V76、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。

A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、循环队列放在一维数组A中,end1指向队头元素,end2指向队尾元素的后一个位置。

数据结构期末考试试题和标准答案及评分标准

数据结构期末考试试题和标准答案及评分标准

《数据结构》试题(A卷)(考试时间: 90分钟)一、单项选择题(本大题共15小题,每小题2分,共30分)(每题只有一个选项是正确的,将答案填写在括号内,错选、多选不得分)1.()是组成数据的基本单位,是一个数据整体中相对独立的单元。

A.数据 B.数据元素 C.数据对象 D.数据结构2.算法计算量的大小称为算法的()。

A.效率B.复杂度C.数据元素之间的关系D.数据的存储方法3.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入或删除运算,则采用以下()方式最节省时间。

A.链式存储B. 索引存储C.顺序存储D.散列存储4.下述哪一条是顺序存储结构的优点?()A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示5.在一个单链表中,若删除p所指结点的后续结点,则执行()。

A.p->next=p->next->nextB.p->next=p->nextC.p=p->next;p->next=p->next->nextD.p=p->next->next6.带头结点的单链表head为空的判定条件是()。

A.head==NULLB.head->next==NULLC.head->next==headD.head!==NULL7.非空的循环单链表head的尾结点(由p所指向)满足()。

A.p->head==NULLB.p==NULLC.p->next==headD.p==head8.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链式存储,不必占用一片连续的存储单元。

D.线性表采用链式存储,便于插入和删除操作。

9.队列操作的原则是()。

A.后进先出B.先进先出C.只能进行插入D.只能进行删除10.栈中允许进行插入和删除的一端称为()。

数据结构智慧树知到答案章节测试2023年甘肃财贸职业学院

数据结构智慧树知到答案章节测试2023年甘肃财贸职业学院

第一章测试1.算法的时间复杂度取决于()A:待处理数据的初态B:问题的规模C:前两个都是D:其它三项均是答案:B2.计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备具备输入、输出和()等5个特性。

A:可行性、确定性和有穷性B:易读性、稳定性和安全性C:可行性、可移植性和可扩充性D:确定性、有穷性和稳定性答案:A3.从逻辑上可以把数据结构分为()两大类。

A:线性结构、非线性结构B:动态结构、静态结构C:初等结构、构造型结构D:顺序结构、链式结构答案:D4.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。

()A:对B:错答案:A5.数据的逻辑结构是指数据的各数据项之间的逻辑关系。

()A:对B:错答案:B第二章测试1.若线性表采用顺序存储结构,每个元素占用4个存储单元,第1个元素的存储地址为100,则第15个元素的存储地址是()。

A:160B:156C:415D:154答案:D2.若长度为n的非空线性表采用顺序存储结构,删除表中第i个数据元素,i的合法值应该是()。

A:1≤i≤nB:i≤nC:1≤i≤n+1D:i>0答案:A3.在一个具有n个结点的有序线性链表中插入一个新结点,使得链表仍然保持有序,则该操作的时间复杂度为()。

A:O(n)B:O(log2n)C:O(n2)D:O(1)答案:A4.在程序设计中,通常用数组来描述线性表的顺序存储结构。

()A:对B:错答案:A5.在链式存储结构中,所有结点必然占用一片连续的存储区域。

()A:错B:对答案:A第三章测试1.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。

A:线性表B:队列C:多维数组D:栈答案:D2.如果以链表作为栈的存储结构,则退栈操作时()。

A:必须判别栈是否空B:必须判别栈是否满C:对栈不作任何判别D:判别栈元素的类型答案:A3.一个队列的入列序是1,2,3,4,则队列的输出系列是()。

数据结构1-6章习题

数据结构1-6章习题

算法与数据结构》第 1-6 章课堂测验(双号)一、选择题1、 已知一个栈的进栈序列是1,2,3,…,n,其输出序列是p i ,p 2,…,p n ,若p i =n,则 p i 的值。

( c )(A) i (B) n-i (C) n-i+1 (D) 不确定2、 设n 个元素进栈序列是1,2,3,…,n,其输出序列是p i ,p 2,…,p n ,若p i =3,则p 2 的值。

( c )(A) 一定是 2 (B) 一定是 1 (C) 不可能是 1 (D) 以上都不对3、 若一棵二叉树具有 10 个度为 2的结点,5 个度为 1 的结点,则度为 0 的结点 个数是( b )A.6B.11C.15D. 不确定4、 在下述结论中,正确的是( d ) ① 只有一个结点的二叉树的度为 0; ② 二叉树的度为 2;③ 二叉树的左右子树可任意交换 ;④ 深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B. ②③④C. ②④D. ①④5、一棵树高为 K 的完全二 叉树至少有()个结点。

( a )A.2 k- 1 k-1 B.2k-1+1 k-1 C.2 k-1D.2k二、简答题1 简述下列术语:线性表,顺序表,链表。

2线性表:最常用且最简单的一种数据结构。

一个线性表是 n 个数据元素的有限序列。

3 顺序表:是指用一组连续的存储单元一次存储线性表中的数据元素。

物理结构和逻辑 结构都相邻。

4链表:逻辑结构相邻的数据元素物理结构不一定相邻。

采用指针的形式连接起来。

2何时选用顺序表,何时选用链表作为线性表的存储结构合适 ?各自的主要优 缺点是什么 ?不需要经常大量的修改表或需要随机存取的情况下可以选用顺序表; 相反需要经常大量的修改表,但不是频繁的随机存取的情况下可选用链式表。

3 链表所表示的元素是否有序 ?如有序,则有序性体现于何处 ?链表所表示的元素 是否一定要在物理上是相邻的 ?有序表的有序性又如何理解 ?答:有序。

数据结构联考试卷1及答案

数据结构联考试卷1及答案
一个12阶对称矩阵a采用行优先顺序存储压缩存储上三角元素a00为第一个元素其存储地址为100每个元素占2个存储地址空间则a45的地址为????????????5
试卷一
一、单项选择题 (每小题 2 分,共 30 分)
1.算法的时间复杂度表征的是( A. 算法的难易程度 C. 执行算法所消耗的存储空间 )。 B. 算法的可读性 D. 执行算法所消耗的时间
7.可以惟一地转化为一棵树的二叉树的特点是( A.根结点没有孩子 C.根结点无左孩子
B.根结点只有一个孩子 D.根结点无右孩子 ) 。
8. 若采用邻接表存储结构, 则图的深度优先搜索类似于二叉树的 ( A.先序遍历 B表 A = (a,(b),(),(c,d,e,f))的长度为( A.3 B.4 C.5 D.6
10.用某种排序方法对关键字序列(25,82,20,45,16,27,66,34, 18)进行排序时,序列的变化情况如下: 18,16,20,25,45,27,66,34,82 16,18,20,25,34,27,45,66,82 16,18,20,25,27,34,45,66,82 则所采用的排序方法是( A.归并排序 ) 。 C.快速排序 D.希尔排序
2.在一个单链表中,若 p 所指结点不是尾元结点,s 指向已生成的新结 点,则在 p 之后插入 s 所指结点的正确操作是( A. s -> next = p -> next; p = s; B. p -> next = s -> next; s -> next = p; C. s -> next = p -> next; p -> next = s; D. s -> next = p; p -> next = s; 3.设循环队列的元素存放在一维数组 A[0..40]中,队列非空时,front 指示队首元素,rear 指示队尾元素的后一个位置。如果队列中元素的个 数为 15,front 的值为 33,则 rear 应指向的位置是( A. A[6] B. A[16] C. A[7] ) 。 D. A[17] ) 。 ) 。

2022年甘肃民族师范学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年甘肃民族师范学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年甘肃民族师范学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a, e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是()。

A.a,b,e,c,d,fB.a,c,f,e,b,dC.a,e,b,c,f, dD.a,e,d,f,c,b2、n个结点的完全有向图含有边的数目()。

A.n*nB.n(n+1)C.n/2D.n*(n-1)3、链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比4、向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()。

A.h->next=sB.s->next=hC.s->next=h;h->next=sD.s->next=h-next;h->next=s5、在下列表述中,正确的是()A.含有一个或多个空格字符的串称为空格串B.对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树C.选择排序算法是不稳定的D.平衡二叉树的左右子树的结点数之差的绝对值不超过l6、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。

下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。

Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ7、下列叙述中,不符合m阶B树定义要求的是()。

A.根结点最多有m棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接8、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为()。

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

#include<stdio.h>
#include<malloc.h>
#include<conio.h>
typedef struct BiTreeNode{
int data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode,*Bitree;
void Inorder(BiTreeNode *Bt)
{
if(Bt!=NULL)
{
Inorder(Bt->lchild);
printf("%d ",Bt->data);
Inorder(Bt->rchild);
}
}
void InsertBST(BiTreeNode *&Bt,int k)
{
if(Bt==NULL)
{
Bt=(BiTreeNode *)malloc(sizeof(BiTreeNode));
Bt->data=k;
Bt->lchild=NULL;
Bt->rchild=NULL;
}
else
{
if(Bt->data>k)
{
InsertBST(Bt->lchild,k);
}
if(Bt->data<k)
{
InsertBST(Bt->rchild,k);
}
}
}
void Exchang(BiTreeNode *&Bt)
{
if(Bt!=NULL)
{
BiTreeNode *r;
Bt->lchild=Bt->rchild;
Bt->rchild=r;
Exchang(Bt->lchild);
Exchang(Bt->rchild);
}
}
main()
{
BiTreeNode *Bt=NULL;
printf("please input data and end with 0:\n");
int k;
scanf("%d",&k);
while(k!=0)
{
InsertBST(Bt,k);
scanf("%d",&k);
}
Inorder(Bt);
printf("\nthe order after exchanging is:\n");
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
typedef struct BiTreeNode{
int data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode,*Bitree;
void Inorder(BiTreeNode *Bt)
{
if(Bt!=NULL)
{
Inorder(Bt->lchild);
printf("%d ",Bt->data);
Inorder(Bt->rchild);
}
}
void InsertBST(BiTreeNode *&Bt,int k)
{
if(Bt==NULL)
{
Bt=(BiTreeNode *)malloc(sizeof(BiTreeNode));
Bt->data=k;
Bt->rchild=NULL;
}
else
{
if(Bt->data>k)
{
InsertBST(Bt->lchild,k);
}
if(Bt->data<k)
{
InsertBST(Bt->rchild,k);
}
}
}
void Exchang(BiTreeNode *&Bt)
{
if(Bt!=NULL)
{
BiTreeNode *r;
r=Bt->lchild;
Bt->lchild=Bt->rchild;
Bt->rchild=r;
Exchang(Bt->lchild);
Exchang(Bt->rchild);
}
}
main()
{
BiTreeNode *Bt=NULL;
printf("please input data and end with 0:\n");
int k;
scanf("%d",&k);
while(k!=0)
{
InsertBST(Bt,k);
scanf("%d",&k);
}
Inorder(Bt);
printf("\nthe order after exchanging is:\n");
Exchang(Bt);
Inorder(Bt);
getch(); Exchang(Bt);
Inorder(Bt);
getch();
}。

相关文档
最新文档