博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1151 LCA in a Binary Tree (30分)(中序求LCA)
阅读量:3899 次
发布时间:2019-05-23

本文共 1348 字,大约阅读时间需要 4 分钟。

【题意】

给定一棵树的中序和前序,给出q个询问,每个询问两个点u,v,询问u,v的最近公共祖先。

【题解】

不需要建整颗树,在左根右这样的中序时,如果两个结点分别在根的左右(可包含根),那么根即是LCA;如果两个结点同时在根的左边,那么我们继续遍历左子树;否则继续遍历右子树。

【代码】

#include 
using namespace std;const int N=10005;unordered_map
mp;unordered_map
mp2;int in[N];int pre[N];int ans;int a,b;void dfs(int midl,int midr,int prel,int prer){ int root=pre[prel]; int p=mp[root]; if(a<=p&&b>=p){ ans=in[p]; return; } else if(a<=p&&b<=p){ //左 dfs(midl,p-1,prel+1,prel+(p-midl)); } else{ dfs(p+1,midr,prel+(p-midl)+1,prer); }}int main(){ int m,n; scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) scanf("%d",&in[i]),mp[in[i]]=i; for(int i=1;i<=n;i++) scanf("%d",&pre[i]); while(m--){ int x,y; scanf("%d%d",&x,&y); if(mp.count(x)) a=mp[x]; else a=-1; if(mp.count(y)) b=mp[y]; else b=-1; if(a==-1&&b==-1) printf("ERROR: %d and %d are not found.\n",x,y); else if(a==-1) printf("ERROR: %d is not found.\n",x); else if(b==-1) printf("ERROR: %d is not found.\n",y); else{ if(a>b) swap(a,b); dfs(1,n,1,n); if(ans==x) printf("%d is an ancestor of %d.\n",x,y); else if(ans==y) printf("%d is an ancestor of %d.\n",y,x); else printf("LCA of %d and %d is %d.\n",x,y,ans); } } return 0;}

 

转载地址:http://rhfen.baihongyu.com/

你可能感兴趣的文章
HTML期末大作业~棋牌游戏静态网站(6个页面) HTML+CSS+JavaScript
查看>>
XmlValidationModeDetector源码分析
查看>>
解析 xml 为Document
查看>>
中国银行2013年校园招聘机试回忆录(综合部分专业题 考点)
查看>>
广发银行2013校园招聘笔试回忆录
查看>>
Android canvas rotate():平移旋转坐标系至任意原点任意角度-------附:android反三角函数小结...
查看>>
Matlab读取avi视频并播放 你必须要知道的
查看>>
word字体大小与公式编辑器字体对照表
查看>>
visio画图-----如何克服两箭头交叉变形 及 箭头自动重绘?
查看>>
Android开发:安装NDK,移植OpenCV2.3.1,JNI调用OpenCV全过程
查看>>
“金9银10”2020年JVM高频率面试题整理,技术提升就差一个点!
查看>>
简简单单的分享2020常见的MySQL面试题MySQL与答案整理
查看>>
听说只有大厂的Android工程师才能全答对这20道题?我看你在吹牛哦!
查看>>
武功秘籍之 Redis 面试题全掌握,学完马上找面试官对线!
查看>>
50道!2020年!!MySQL高频数据库面试题解析,你都懂了吗?
查看>>
如何用Spring Boot加密配置文件中的特殊内容示例代码详解
查看>>
谈谈这些年面试官给大伙下的那些套,如何解?(面试技巧)
查看>>
5年开发经验的我被几条朋友圈打击到,点燃自己冲击阿里面经!
查看>>
5年工作经验的我放弃安逸,一份来自腾讯魔鬼面试的终极考验!
查看>>
学JAVA吗同学,这篇Sping boot 确定不了解下么?
查看>>