最近公共祖先问题

最近公共祖先问题

ID:5529223

大小:603.50 KB

页数:9页

时间:2017-11-13

最近公共祖先问题_第1页
最近公共祖先问题_第2页
最近公共祖先问题_第3页
最近公共祖先问题_第4页
最近公共祖先问题_第5页
资源描述:

《最近公共祖先问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最近公共祖先问题学号:030602312姓名:张玺霖报告时间:(2008-4-21)«问题描述:设计一个算法,对于给定的树中2结点返回它们的最近公共祖先。«实验任务:对于给定的树,和树中结点对,计算结点对的最近公共祖先。«数据输入:由文件input.txt给出输入数据。第一行有1个正整数n,表示给定的树有n个顶点,编号为1,2,…,n。编号为1的顶点是树根。接下来的n行中,第i+1行描述与i个顶点相关联的子结点的信息。每行的第一个正整数k表示该顶点的儿子结点数。其后k个数中,每1个数表示1个儿子结点的编号。当k=0时表示相应的结点是叶结点。   文件的第n+2行是1个正整数m,表示要计

2、算最近公共祖先的m个结点对。接下来的m行,每行2个正整数,是要计算最近公共祖先的结点编号。«结果输出:将计算出的m个结点对的最近公共祖先结点编号输出到文件output.txt。每行3个正整数,前2个是结点对编号,第3个是它们的最近公共祖先结点编号。输入文件示例input.txt1232342560027829100002111200531171248912810输出文件示例output.txt3111712248191268102总节点数各节点的儿子数以及儿子节点要求最近公共祖先节点对总数各个节点对基本算法思路123456781112910011122558866父节点数组表示法深度0

3、12341.利用父节点数组表示法建树;2.建树的过程中利用结构体将每个节点的深度存入节点中;3.求出p(深度较大)、q(深度较小)两节点的深度差,利用深度差,找出与q同深度的p的祖先p’;4.p的祖先p’和q一起往上搜索,直到搜索到相同的节点就停止搜索并输出。搜索节点10和11的公共祖先数据结构的选取structdef{intf;intl;};父亲编号f节点深度l001111112222535384846363树的建立a[0].l=0;//根节点深度为0for(i=0;i

4、a[temp-1].f=i;//存入父亲的编号a[temp-1].l=a[i].l+1;//深度比父亲大一}}公共祖先的搜索if(a[p].l

5、节省时间算法缺点:记录深度,使得建树的空间翻倍

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。