1151 LCA in a Binary Tree (30分)

题目大意:给出一棵树的中序和先序遍历,找到这棵树中U和V最小的共同祖先。

Tips:

  1. 使用一个unordered_map记录中序遍历的值以及该值对应的下标,如果U和V的下标在某个值的左右两边,或者等于U和V中的一个,则找到;(无需递归)
  2. 使用map记录出现过的值
#include<iostream>                  //输入输出流头文件
#include<unordered_map>             //无序的map映射容器
#include<vector>                    //变长数组容器
using namespace std;                //标准命名空间
int m,n,x,y;
int main(){                         //主函数cin>>m>>n;vector<int> pre(n);unordered_map<int,int> show,ino;for(int i=0;i<n;i++){cin>>x;ino[x]=i;//记录当前值以及对应下标show[x]=1;}for(int i=0;i<n;i++) cin>>pre[i];for(int i=0;i<m;i++){cin>>x>>y;if(show[x]!=1){if(show[y]!=1)cout<<"ERROR: "<<x<<" and "<<y<<" are not found."<<endl;else cout<<"ERROR: "<<x<<" is not found."<<endl;}else if(show[y]!=1) cout<<"ERROR: "<<y <<" is not found."<<endl;else{ int j=0;for(;j<n;j++){if(pre[j]==x||pre[j]==y||(ino[x]>ino[pre[j]]&&ino[y]<ino[pre[j]])||(ino[x]<ino[pre[j]]&&ino[y]>ino[pre[j]]))break;}if(pre[j]==x||pre[j]==y) cout<<(pre[j]==x?x:y)<<" is an ancestor of "<<(pre[j]==x?y:x)<<".\n";else cout<<"LCA of "<<x<<" and "<<y<<" is "<<pre[j]<<".\n";}}return 0;                       //返回0,如果不返回0,PAT会报错
}

PAT甲级 1151 LCA in a Binary Tree (30分) LCA算法/C++相关推荐

  1. PAT甲级1151 LCA in a Binary Tree (30 分):[C++题解]LCA、最低公共祖先、哈希表映射

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 和下面这道题几乎是同一题:PAT甲级1143 Lowest Common Ancestor (30 分):[C++题解]LCA.最低 ...

  2. PAT甲级1135 Is It A Red-Black Tree (30分):[C++题解]判断红黑树

    文章目录 题目分析 题目链接 题目分析 分析 给定前序遍历,同时红黑树一定是二叉搜索树,所以它的中序遍历就是从小到大排序.因此这道题是给定了前序遍历和中序遍历让建立二叉搜索树(BST). 数据结构中有 ...

  3. 1151 LCA in a Binary Tree (30 分)【难度: 难 / 知识点: LCA 未完成】

    https://pintia.cn/problem-sets/994805342720868352/problems/1038430130011897856

  4. PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 首先这是一道dijkstra算法求最短路的题目,不过此题较为复杂.首先需要将字符串城市名映射成数字,这里使用hash table 名 ...

  5. PAT甲级1115 Counting Nodes in a BST (30分):[C++题解] 递归建二叉搜索树、dfs求一层结点数量

    文章目录 题目分析 题目链接 题目分析 分析 首先本题给定的二叉搜索树的定义和其他地方的不同.本题小于等于的是左子树,右子树是大于根结点的. 然后说一下做题的思路. 给定一串数据,让构造二叉搜索树. ...

  6. 1151 LCA in a Binary Tree (含求LCA的通法)

    目录 解法一思路 结果 解法一改进 解法一改进结果 ​解法二思路 解法一代码 解法一改进代码 解法二代码(AC) 解法一思路 1. 根据先序和中序建树 2. 对树进行深度优先遍历,找到每一个结点的父节 ...

  7. 【PAT - 甲级1034】Head of a Gang (30分)(并查集)

    题干: One way that the police finds the head of a gang is to check people's phone calls. If there is a ...

  8. PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs

    文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的结构,和待填的数值,请将数据填到二叉树中的结点中,使之满足二叉搜索树的性质. 然后按照层序遍历输出数值. 分析: 本题分两步. 第一步 ...

  9. PAT甲级1064 Complete Binary Search Tree (30分):[C++题解]完全二叉搜索树BST

    文章目录 题目分析 题目链接 题目分析 思路: 第一步,构造含有n个结点的完全二叉树:第二步,将n个数值填入,使其满足二叉搜索树的性质. 对于第一步: 完全二叉树用一维数组可以存下,不过从根结点的下标 ...

最新文章

  1. DNS MX记录一定要放在A记录之前
  2. Kubectl 的替代品:kubeman
  3. 池化层对神经网络的运算速度有什么影响
  4. Linux 初始化之 Systemd机制
  5. 阮一峰react demo代码研究的学习笔记 - how is h1 got parsed - not answer
  6. Java 算法 旅行家的预算
  7. 多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上)
  8. Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
  9. 结构梁配筋最牛插件_Revit结构出图案例分享
  10. 如何写好小论文论文摘要
  11. excel删除无尽空白行_史上最简单的Excel工资条制作方法,实用收藏!
  12. 20条职业发展建议,送给拒绝原地踏步的你
  13. Linux测试系统稳定性的工具,Linux桌面操作系统稳定性测试.pdf
  14. android电视查看百度网盘,智能电视也能看百度网盘内的视频,通过当贝市场,方法超简单!...
  15. 加入新公司,快速熟悉业务和项目的六个要点!你了解了吗?
  16. 15位和18位身份证提取出生日期,性别和城市代码
  17. 达梦DM7_dmdbchk使用
  18. DIY 基于51单片机的电子温度计的总结
  19. Ksz8081目前为MICROCHIP主推的PHY芯片之一,原为MICREL公司设计;芯片分为MII接口型号,RMII接口型号,分了两种不同的产品型号。enc28j60集成了MAC和PHY芯片
  20. imacros:使用外部编辑器

热门文章

  1. x86服务器MCE(Machine Check Exception)问题
  2. 【ESP 保姆级教程】玩转emqx认证篇② ——认证安全之使用内置数据库(Mnesia)的密码认证
  3. ASP:KU论坛跳转页面
  4. Python 已知三角形三边求三角形面积
  5. Dual-Resolution Correspondence Networks 2020
  6. 【5G模组】讨论RSSI,RSRP,RSRQ and SINR
  7. python教材知乎_关于 Python 的经典入门书籍有哪些?
  8. Android集成微信支付之-天坑
  9. java常见的设计模式
  10. Linux(Ubuntu)下使用OneNote