1143 Lowest Common Ancestor 甲级
题意:
给出一棵二叉搜索树的前序遍历,问结点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 甲级相关推荐
- PAT甲级1143 Lowest Common Ancestor (30 分):[C++题解]LCA、最低公共祖先
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:二叉搜索树的中序遍历是隐含给定的,它的中序遍历就是从小到大排列. 所以这道题先是根据给定的前序遍历和中序遍历,建树. 建树的时候需要用 ...
- 【题解】【PAT甲】1143 Lowest Common Ancestor (30 分)(树)(BST)(最近公共祖先)
题目链接 PTA | 程序设计类实验辅助教学平台 题目描述 The lowest common ancestor (LCA) of two nodes U and V in a tree is the ...
- 1143. Lowest Common Ancestor
1143. Lowest Common Ancestor (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- 1143 Lowest Common Ancestor(建树与不建两种思路)
目录 解法一 解法二 解法一 这题可以不建树,直接利用BST的性质:左子树<根节点<右子树,对先序序列进行遍历,如果有某个元素大于等于u,v中较小的且小于等于u,v中较大的,则可能是根节点 ...
- 1143 Lowest Common Ancestor (30 分)【难度: 中 / 知识点: 最低公共祖先 未完成】
https://pintia.cn/problem-sets/994805342720868352/problems/994805343727501312
- 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 ...
- 235 Lowest Common Ancestor of a Binary Search Tree
题目 235 Lowest Common Ancestor of a Binary Search Tree 因为是binary search tree,因此利用没个节点的值进行二分查找即可复杂度O(h ...
- C语言二叉树的lowest common ancestor最低公共祖先(附完整源码)
C语言二叉树的lowest common ancestor最低公共祖先 C语言二叉树的lowest common ancestor最低公共祖先完整源码(定义,实现,main函数测试) C语言二叉树的l ...
- C++lowest common ancestor最近公共祖先算法(附完整源码)
C++lowest common ancestor最近公共祖先算法 C++lowest common ancestor最近公共祖先算法完整源码(定义,实现,main函数测试) C++lowest co ...
最新文章
- MySQL5.5各架构复制
- Java机器学习库ML之十一线性SVM
- Capsule下一代CNN深入探索
- 逻辑漏洞挖掘初步总结篇
- 【HDU - 1276】士兵队列训练问题 (报数问题 模拟)
- 给javascript初学者的24条最佳实践
- 【操作系统】多线程与多任务的比较
- NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?...
- Postman 如何处理上一个接口返回值作为下一个接口入参?
- php操作cookie_php设置cookie【三种方案】
- wine android6,安卓能跑Windows程序,Wine 2.10开发版发布
- 谢菲尔德大学的MATLAB遗传算法工具箱(附代码文件)
- Halcon教程-HALCON19.05Progress将于2019年5月31日正式发布
- 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-9825】-【V6.0 Android-Q-TG1】...
- java微信开发教程,Java微信公众平台开发(1) 接入微信公众平台
- 电脑(PC端)多开两个或多个微信
- 好想与你天长地久,共度岁月
- Mysql单表查询和多表查询
- [原创]-Day5.数据可视化之Pyecharts
- 管网gis系统 服务器,管网GIS系统可以实现什么功能
热门文章
- 动力强劲的星型发动机,为何不用在汽车上呢?
- 中小学将逐步推广编程教育;勒索病毒攻击部分政府部门和医院;国内外药企密集调价;微软要给Win7用户推死亡通知,这就是今天的大新闻...
- 入坑机器学习?送你一篇麻省博士的学习心得
- 一个人开始废掉的3种迹象
- oracle bcp out,SQL Server利用bcp命令把SQL语句结果生成文本文件
- ios支付宝支付失败不回调_iOS 支付宝网页支付回调问题
- abaqus质量缩放系数取值_ABAQUS/Explicit质量缩放(MASS SCALING)使用心得 [转simwe]...
- python函数用于创建对象_Python-创建类并使用函数更改其对象值
- 调整png的不透明度_TGA与PNG的优劣对比
- leetcode455. 分发饼干