2011年江苏省理论数据入门
更新时间:2023-05-22 15:53:01 阅读量: 实用文档 文档下载
- 2011年江苏省考推荐度:
- 相关推荐
2011年江苏省理论数据入门
1、设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。
2、假设以邻接矩阵作为图的存储结构,编写算法判别在给定的有向图中是否存在一个简单有向回路,若存在,则以顶点序列的方式输出该回路(找到一条即可)。(注:图中不存在顶点到自己的弧)
有向图判断回路要比无向图复杂。利用深度优先遍历,将顶点分成三类:未访问;已访问但其邻接点未访问完;已访问且其邻接点已访问完。下面用0,1,2表示这三种状态。前面已提到,若dfs(v)结束前出现顶点u到v的回边,则图中必有包含顶点v和u的回路。对应程序中v的状态为1,而u是正访问的顶点,若我们找出u的下一邻接点的状态为1,就可以输出回路了。
void Print(int v,int start ) //输出从顶点start开始的回路。
{for(i=1;i<=n;i++)
if(g[v][i]!=0 && visited[i]==1 ) //若存在边(v,i),且顶点i的状态为1。 {printf(“%d”,v);
if(i==start) printf(“\n”); else Print(i,start);break;}//if
void dfs(int v)
{visited[v]=1;
for(j=1;j<=n;j++ )
if (g[v][j]!=0) //存在边(v,j)
if (visited[j]!=1) {if (!visited[j]) dfs(j); }//if
else {cycle=1; Print(j,j);}
visited[v]=2;
}//dfs
void find_cycle() //判断是否有回路,有则输出邻接矩阵。visited数组为全局变量。 {for (i=1;i<=n;i++) visited[i]=0;
for (i=1;i<=n;i++ ) if (!visited[i]) dfs(i);
}//find_cycle
3、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。若非二叉排序树,则置flag为false。
#define true 1
#define false 0
typedef struct node
{datatype data; struct node *llink,*rlink;} *BTree;
void JudgeBST(BTree t,int flag)
// 判断二叉树是否是二叉排序树,本算法结束后,在调用程序中由flag得出结论。 { if(t!=null && flag)
{ Judgebst(t->llink,flag);// 中序遍历左子树
if(pre==null)pre=t;// 中序遍历的第一个结点不必判断
else if(pre->data<t->data)pre=t;//前驱指针指向当前结点
else{flag=flase;} //不是完全二叉树
Judgebst (t->rlink,flag);// 中序遍历右子树
2011年江苏省理论数据入门
}//JudgeBST算法结束
4、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。
当n=1时,只有一个根结点,由中序序列和后序序列可以确定这棵二叉树。
设当n=m-1时结论成立,现证明当n=m时结论成立。
设中序序列为S1,S2, ,Sm,后序序列是P1,P2, ,Pm。因后序序列最后一个元素Pm是根,则在中序序列中可找到与Pm相等的结点(设二叉树中各结点互不相同)Si(1≤i≤m),因中序序列是由中序遍历而得,所以Si是根结点,S1,S2, ,Si-1是左子树的中序序列,而Si+1,Si+2, ,Sm是右子树的中序序列。
若i=1,则S1是根,这时二叉树的左子树为空,右子树的结点数是m-1,则{S2,S3, ,Sm}和{P1,P2, ,Pm-1}可以唯一确定右子树,从而也确定了二叉树。
若i=m,则Sm是根,这时二叉树的右子树为空,左子树的结点数是m-1,则{S1,S2, ,Sm-1}和{P1,P2, ,Pm-1}唯一确定左子树,从而也确定了二叉树。
最后,当1<i<m时,Si把中序序列分成{S1,S2, ,Si-1}和{Si+1,Si+2, ,Sm}。由于后序遍历是“左子树—右子树—根结点”,所以{P1,P2, ,Pi-1}和{Pi,Pi+1, Pm-1}是二叉树的左子树和右子树的后序遍历序列。因而由{S1,S2, ,Si-1}和{P1,P2, ,Pi-1} 可唯一确定二叉树的左子树,由{Si+1,Si+2, ,Sm}和
{Pi,Pi+1, ,Pm-1}可唯一确定二叉树的右子树 。
5、二部图(bipartite graph) G=(V,E)是一个能将其结点集V分为两不相交子集V 1和V2=V-V1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在图G中也均不相邻。
(1).请各举一个结点个数为5的二部图和非二部图的例子。
(2).请用C或PASCAL编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂度。设G用二维数组A来表示,大小为n*n(n为结点个数)。请在程序中加必要的注释。若有必要可直接利用堆栈或队列操作。【
6、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。 二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。分析你的算法的时、空复杂度。
正在阅读:
2011年江苏省理论数据入门05-22
2018最新数据结构试题及答案(10套)04-28
数学建模在食品科学与研究中的运用02-01
第一次世界大战 - 图文01-22
平面控制网复测及加密成果报告01-14
行政综合部绩效考核方案06-01
淘宝新宝贝排名规则08-28
中国数码相机模型行业市场前景分析预测报告(目录) - 图文01-13
成功的滋味作文550字07-11
3462高教杯数学建模一等奖论文08-11
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 江苏省
- 入门
- 理论
- 数据
- 2011
- 纳米材料力学特性量值溯源方法研究
- 传感器原理与应用试卷1
- 123别墅项目质量计划(新)
- 环境会计报告模式研究
- 中国近现代史纲要参考书目
- 2014年一轮复习:9.4电磁感应规律的综合应用(二)
- 满意度问卷调查表
- 北交大会计硕士就业怎么样?
- 3楼单位工程质量评估报告
- 2012四川英语高考题含答案
- 《金融学》第5章金融市场 曹龙骐 第四版
- 2014年1月份 公共关系学中央广播电视大学2012-2013学年度第一学期“开放专科”期末考试公共关系学 试题
- 安防监控 消防工程投标书文件经验心得
- 物质的浓度的配制
- 龙门起重机安全操作规程
- 安捷伦中高端示波器
- 2第2章 国际货币制度习题答案
- 31.《快乐王子》1
- 最新游园活动方案范文(1)
- 幼儿园家长助教心得