PAT a1143

news/2024/11/26 4:48:04/

目的:找到两个节点的最低祖先。在二叉搜索树上找

输入:

M  被测试的节点对数 1000

N  二叉搜索树的节点个数 10000

然后给出二叉搜索树的先序遍历序列

然后再是M个节点对。每对节点有U,V两个节点。

输出:

如果找到了LCA,输出"LCA of U and V is A."

如果LCA是U和V中的一个,输出"X is an ancestor of Y."

如股票没有找到:

可能是因为点不在树中;

输出:ERROR: U is not found. 

           ERROR: V is not found. 

           ERROR: U and V are not found.

算法:

根据二叉搜索树的特点,若是两个节点的最小根节点。那么这个节点的值一定处于两个之间,而且,一定在两个节点之前。

判断在不在树中,用一个map存一下,查找看在不在。

#include<stdio.h>
#include<map>
#include<math.h>using namespace std;const int maxn = 10010;
int a[maxn];
map<int,int> b;
int n,m;int main()
{scanf("%d%d",&m,&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);b[a[i]] = 1;}for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);if(b.find(u)==b.end()&&b.find(v)==b.end()){printf("ERROR: %d and %d are not found.\n",u,v);}else if(b.find(u)==b.end()){printf("ERROR: %d is not found.\n",u);}else if(b.find(v)==b.end()){printf("ERROR: %d is not found.\n",v);}else{int ans;for(int j=0;j<n;j++){if(a[j]>min(u,v)&&a[j]<=max(u,v)){ans = a[j];break;}}if(ans==u||ans==v){printf("%d is an ancestor of %d.\n",ans,ans==u?v:u);}else{printf("LCA of %d and %d is %d.\n",u,v,ans);}}}return 0;
}

反思:最后一些困难,是狭隘得理解了根节点一定在中间,所以我认为,根节点一定大于左边节点,小于等于右边节点,事实上,这两个节点中可能有根节点,所以两边都有等于。


http://www.ppmy.cn/news/292690.html

相关文章

74HC14中文资料

转自&#xff1a;http://www.dz3w.com/info/cmos/0083833.html 74HC14的作用&#xff1a;六反相斯密特触发器 74HC14引脚图: 图1 引脚功能 74HC14真值表: 真值表&#xff1a;YA Input输入 output输出 A Y L H H L 74HC14电气参数: 极限参数&#xff1a; Supply Vo…

A1128

看过算法笔记递归那节的n皇后&#xff0c;写起来很顺&#xff1a; 注意点&#xff1a; 1、题目没说给定的各个数都是不同的&#xff0c;只说了不会同列&#xff0c;但会有在同行的情况出现. 2、判断是否在对角线上的写法的原因详见p117最上方. #include<cstdio> #includ…

A1041

一开始没读懂题目&#xff0c;将unique翻译成了公平&#xff0c;然后便将重心移向了寻找排在最中间的数&#xff0c;彻底走歪了。 #include<cstdio> #include<cstdlib> #include<string.h> #include<iostream> #include<vector> #include<se…

LPC1114 读取74HC165数据(级联)

1、74HC165简介 74HC165是8位并行读取或串行输入移位寄存器&#xff0c;可在末级得到互补的串行输出&#xff08;Q7和&#xff01;Q7&#xff09;&#xff0c;当异步并行读取引脚&#xff08;&#xff01;PL&#xff09;输入为低时&#xff0c;从D0到D7口输入的并行数据将被读取…

A1064 Complete Binary Search Tree

Powered by:NEFU AB-IN Link 文章目录 A1064 Complete Binary Search Tree题意思路代码 A1064 Complete Binary Search Tree 题意 二叉搜索树 (BST) 递归定义为具有以下属性的二叉树&#xff1a; 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值 若它…

114514

链接&#xff1a;https://ac.nowcoder.com/acm/contest/1087/B 来源&#xff1a;牛客网 题目描述 给你一个长为n的序列 定义一个序列下标的子集为先辈&#xff0c;当且仅当选出的这些下标对应的序列值的乘积为114514&#xff0c;而且因为只有一只野兽&#xff0c;所以有个要…

74161

第二篇&#xff0c;74161计数器。2018.3.24 今天天气不错。。。 和74138步骤完全一样&#xff0c;只不过换了一个。 如图 上网找了关于74161的引脚设置&#xff0c;如图&#xff1a; 由于没有学习过计数器&#xff0c;对其中的只是不特别了解。 接下来就是仿真&#xff0c;…

各代iPhone iPad 内部代号 Hardware Model

https://www.theiphonewiki.com/wiki/Models https://www.theiphonewiki.com/wiki/List_of_iPadshttps://www.theiphonewiki.com/wiki/List_of_iPhones#iPhone_7_Plus 科普一下iPad的内部名字&#xff1a; iPad modelInternal Name iPad A1219 A1337iPad1,1iPad 2 A139…