团体程序设计天梯赛 L3-016. 二叉搜索树的结构
#include <cstdio>
#include <cstdlib>
#include <string.h>
#include <math.h>
#include <stdbool.h>
#include <algorithm>
using namespace std;
#define maxn 500+100 //离散化+结构体数组存储树(数据可能很大,不可能用tree[x]记录值为x的结点,而用链表存储树,在这一题判断兄弟结点等不太方便)
//输入的数据点也许并不在树上
//兄弟结点不能相同 struct node
{
long left,right,fa,depth;
}tree[maxn]; long n,num[maxn],z[maxn]; bool cmp(long a,long b)
{
return a<b;
} //better:binary search
int findnum(long value)
{
long i;
for (i=;i<=n;i++)
if (value==z[i])
return i;
return n+;
} int add(long pos,long value,long depth)
{
if (value < pos)
{
if (tree[pos].left==)
{
tree[pos].left=value;
tree[value].fa=pos;
tree[value].depth=depth;
}
else
add(tree[pos].left,value,depth+);
}
else
{
if (tree[pos].right==)
{
tree[pos].right=value;
tree[value].fa=pos;
tree[value].depth=depth;
}
else
add(tree[pos].right,value,depth+);
}
} int main()
{
long i,j,x,y,p,q,m,root;
char a[],b[],c[],d[],e[],f[];
scanf("%ld",&n);
for (i=;i<=n;i++)
{
scanf("%ld",&z[i]);
num[i]=z[i];
}
for (i=;i<=n;i++)
{
tree[i].left=;
tree[i].right=;
tree[i].fa=; //不能像并查集一样设置为i
}
sort(z+,z+n+,cmp); //[x,y) root=findnum(num[]);
tree[root].depth=;
for (i=;i<=n;i++)
{
j=findnum(num[i]);
add(root,j,);
} scanf("%ld",&m);
while (m)
{
m--;
scanf("%ld",&x);
p=findnum(x);
scanf("%s",a);
if (strcmp(a,"is")==)
{
scanf("%s%s",b,c);
if (strcmp(c,"root")==)
{
// if (p!=n+1 && tree[p].fa==0)
if (x==num[])
printf("Yes\n");
else
printf("No\n");
}
else if (strcmp(c,"parent")==)
{
scanf("%s",d);
scanf("%ld",&y);
q=findnum(y);
if (q!=n+ && tree[q].fa==p)
printf("Yes\n");
else
printf("No\n");
}
else if (strcmp(c,"left")==)
{
scanf("%s%s",d,e);
scanf("%ld",&y);
q=findnum(y);
if (q!=n+ && tree[q].left==p)
printf("Yes\n");
else
printf("No\n");
}
else
{
scanf("%s%s",d,e);
scanf("%ld",&y);
q=findnum(y);
if (q!=n+ && tree[q].right==p)
printf("Yes\n");
else
printf("No\n");
}
}
//and
else
{
scanf("%ld",&y);
q=findnum(y);
scanf("%s%s",b,c);
if (strcmp(c,"siblings")==)
{
if (p!=n+ && q!=n+ && p!=q && tree[p].fa==tree[q].fa) //两个结点不能相同
printf("Yes\n");
else
printf("No\n");
}
else
{
scanf("%s%s%s",d,e,f);
if (p!=n+ && q!=n+ && tree[p].depth==tree[q].depth)
printf("Yes\n");
else
printf("No\n");
}
}
}
return ;
}
团体程序设计天梯赛 L3-016. 二叉搜索树的结构的更多相关文章
- 天梯赛练习 L3-016 二叉搜索树的结构 (30分)
题目分析: 用数型结构先建树,一边输入一边建立,根节点的下标为1,所以左孩子为root*2,右孩子为root*2+1,输入的时候可用cin输入字符串也可用scanf不会超时,判断是否在同一层可以判断两 ...
- PAT 天梯赛 是否完全二叉搜索树 (30分)(二叉搜索树 数组)
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
随机推荐
- Python 中的一些小技巧
这里是本人收集的一些 Python 小技巧,目前主要是一些实用函数,适合有一定基础的童鞋观看(不会专门介绍使用到的标准库函数).. 一.函数式编程 函数式编程用来处理数据,感觉很方便.(要是再配上管道 ...
- Final阶段版本控制报告
版本控制代码及文档要求 在coding.net版本控制; 公开项目,教师.专家.其他同学可以不注册源代码.在此公布git地址. 报告beta阶段2周中,项目的版本控制情况,不包括未在coding.ne ...
- jQuery获取复选框选中的每一个值
$('input[name="serviceMode"]:checked').each(function(){ this.attr('value') });
- Daily Scrumming 2015.10.21(Day 2)
今明两天任务表 Member Today’s Task Tomorrow’s Task 江昊 配置ruby与rails环境 配置mysql与数据库用户管理 配置apache2环境 学习rails Ac ...
- 渐入OO课的深处,探索多线程的秘密——OO第二次博客总结
一次又一次的挑战,一次又一次全新的知识,我来到了多线程的面前 第五次作业 1.度量分析 >第五次作业由于很大程度上调用的是前两次电梯的一些代码,所以存在的问题与前几次也十分相似.同时由于第一次使 ...
- HTTP&HTTPS、GET&POST
1.HTTP&HTTPS: HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure ...
- Mac OS10.10 openfire无法启动问题
1.我用的Java版本是Version 8 Update 51,验证方法可到这个网址下去验证http://www.java.com/zh_CN/download/installed.jsp 2.ope ...
- vue 选项卡(转载)
!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-e ...
- jQuery之_事件绑定与解绑
使用jQuery实现事件的绑定和解绑 就是所谓的事件操作. 1. 事件绑定(2种): * eventName(function(){}) 绑定对应事件名的监听, 例如:$('#div').click( ...
- [BUAA_SE_2017]个人作业-Week1
个人作业-Week1 疑问 教材中说,PM在衡量需求时需要方方面面的能力与研究.可是,当下许多互联网IT公司只承担外包业务,即客户给什么需求就实现什么需求,甚至可能不要求其它先进的功能.此时,开发团队 ...