题意:

给出一棵二叉搜索树的前序遍历,问结点u和v的共同最低祖先是谁,利用先序遍历特点。
二叉搜索树满足:
节点的左子树只包含键小于节点键的节点。
节点的键只包含节点的右键大于或等于子树的节点的键。
左子树和右子树也必须是二叉搜索树。

题解:

样例:
6 3 1 2 5 4 8 7
根据题目要求我们可以得到:

红字则是该数字在前序遍历中出现的顺序(从0开始)
我们可以从题目要求下手,在本题中,根的左子树总是小于根,右子树总是大于根
查询u和v的lca,如果一个x(x不与u和v重合)同时满足x>u,x<v,说明u在x的左边,v在x的右边,那说明x就是u和v的lca
同理。x<u,x>v也是
当然x和u或v重合时也是

代码:

#include<bits/stdc++.h>
using namespace std;
map<int,bool> mp;
int main(){int m,n,u,v,a;cin>>m>>n;vector<int> pre(n);for (int i=0;i<n;i++){cin>>pre[i];mp[pre[i]]=true;}for (int i=0;i<m;i++){cin>>u>>v;for (int j=0;j<n;j++){a=pre[j];if ((a>u&&a<v)||(a>v&&a<u)||(a==u)||(a==v))break;}if (mp[u]==false&&mp[v]==false)printf("ERROR: %d and %d are not found.\n",u,v);else if (mp[u] == false || mp[v] == false)printf("ERROR: %d is not found.\n", mp[u] == false ? u : v);else if (a == u || a == v)printf("%d is an ancestor of %d.\n", a, a == u ? v : u);elseprintf("LCA of %d and %d is %d.\n", u, v, a);}return 0;
}

1143 Lowest Common Ancestor 甲级相关推荐

  1. PAT甲级1143 Lowest Common Ancestor (30 分):[C++题解]LCA、最低公共祖先

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:二叉搜索树的中序遍历是隐含给定的,它的中序遍历就是从小到大排列. 所以这道题先是根据给定的前序遍历和中序遍历,建树. 建树的时候需要用 ...

  2. 【题解】【PAT甲】1143 Lowest Common Ancestor (30 分)(树)(BST)(最近公共祖先)

    题目链接 PTA | 程序设计类实验辅助教学平台 题目描述 The lowest common ancestor (LCA) of two nodes U and V in a tree is the ...

  3. 1143. Lowest Common Ancestor

    1143. Lowest Common Ancestor (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  4. 1143 Lowest Common Ancestor(建树与不建两种思路)

    目录 解法一 解法二 解法一 这题可以不建树,直接利用BST的性质:左子树<根节点<右子树,对先序序列进行遍历,如果有某个元素大于等于u,v中较小的且小于等于u,v中较大的,则可能是根节点 ...

  5. 1143 Lowest Common Ancestor (30 分)【难度: 中 / 知识点: 最低公共祖先 未完成】

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

  6. Lowest Common Ancestor of a Binary Search Tree(树中两个结点的最低公共祖先)

    题目描述: Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in ...

  7. 235 Lowest Common Ancestor of a Binary Search Tree

    题目 235 Lowest Common Ancestor of a Binary Search Tree 因为是binary search tree,因此利用没个节点的值进行二分查找即可复杂度O(h ...

  8. C语言二叉树的lowest common ancestor最低公共祖先(附完整源码)

    C语言二叉树的lowest common ancestor最低公共祖先 C语言二叉树的lowest common ancestor最低公共祖先完整源码(定义,实现,main函数测试) C语言二叉树的l ...

  9. C++lowest common ancestor最近公共祖先算法(附完整源码)

    C++lowest common ancestor最近公共祖先算法 C++lowest common ancestor最近公共祖先算法完整源码(定义,实现,main函数测试) C++lowest co ...

最新文章

  1. MySQL5.5各架构复制
  2. Java机器学习库ML之十一线性SVM
  3. Capsule下一代CNN深入探索
  4. 逻辑漏洞挖掘初步总结篇
  5. 【HDU - 1276】士兵队列训练问题 (报数问题 模拟)
  6. 给javascript初学者的24条最佳实践
  7. 【操作系统】多线程与多任务的比较
  8. NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?...
  9. Postman 如何处理上一个接口返回值作为下一个接口入参?
  10. php操作cookie_php设置cookie【三种方案】
  11. wine android6,安卓能跑Windows程序,Wine 2.10开发版发布
  12. 谢菲尔德大学的MATLAB遗传算法工具箱(附代码文件)
  13. Halcon教程-HALCON19.05Progress将于2019年5月31日正式发布
  14. 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-9825】-【V6.0 Android-Q-TG1】...
  15. java微信开发教程,Java微信公众平台开发(1) 接入微信公众平台
  16. 电脑(PC端)多开两个或多个微信
  17. 好想与你天长地久,共度岁月
  18. Mysql单表查询和多表查询
  19. [原创]-Day5.数据可视化之Pyecharts
  20. 管网gis系统 服务器,管网GIS系统可以实现什么功能

热门文章

  1. 动力强劲的星型发动机,为何不用在汽车上呢?
  2. 中小学将逐步推广编程教育;勒索病毒攻击部分政府部门和医院;国内外药企密集调价;微软要给Win7用户推死亡通知,这就是今天的大新闻...
  3. 入坑机器学习?送你一篇麻省博士的学习心得
  4. 一个人开始废掉的3种迹象
  5. oracle bcp out,SQL Server利用bcp命令把SQL语句结果生成文本文件
  6. ios支付宝支付失败不回调_iOS 支付宝网页支付回调问题
  7. abaqus质量缩放系数取值_ABAQUS/Explicit质量缩放(MASS SCALING)使用心得  [转simwe]...
  8. python函数用于创建对象_Python-创建类并使用函数更改其对象值
  9. 调整png的不透明度_TGA与PNG的优劣对比
  10. leetcode455. 分发饼干