#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. 二叉搜索树的结构的更多相关文章

  1. 天梯赛练习 L3-016 二叉搜索树的结构 (30分)

    题目分析: 用数型结构先建树,一边输入一边建立,根节点的下标为1,所以左孩子为root*2,右孩子为root*2+1,输入的时候可用cin输入字符串也可用scanf不会超时,判断是否在同一层可以判断两 ...

  2. PAT 天梯赛 是否完全二叉搜索树   (30分)(二叉搜索树 数组)

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...

  3. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  4. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  6. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  7. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  8. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  9. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  10. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

随机推荐

  1. Python处理PDF和Word文档常用的方法

    Python处理PDF和Word文档的模块是PyPDF2,使用之前需要先导入. 打开一个PDF文档的操作顺序是:用open()函数打开文件并用一个变量来接收,然后把变量给传递给PdfFileReade ...

  2. 第十次作业psp

    psp 进度条 博文累积折线图 代码累积折线图 psp饼状图

  3. asp.net文件上传接收不到文件 Request.files["']等于null

    这个时候你应该检查下你的form表单里面是否配置了这个: enctype ="multipart/form-data"  新手容易出错哦. <form id="fo ...

  4. Beta冲刺 (7/7)

    队名:天机组 组员1友林 228(组长) 今日完成:封装代码 明天计划: 剩余任务:优化网络通讯机制 主要困难:暂无 收获及疑问:暂无 组员2方宜 225 今日完成:优化了一部分活动 明天计划:剩余活 ...

  5. week4b:个人博客作业

    下面是week4做程序的过程. 1.在做之前先做客户需求,要求使用的使用mul图. 自己第一次听到这个名字,网上查UML为, http://www.cnblogs.com/wangkangluo1/a ...

  6. 转 理解vuex -- vue的状态管理模式

    转自:https://segmentfault.com/a/1190000012015742 vuex是什么? 先引用vuex官网的话: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...

  7. 配置docker的私有仓库

    1:安装docker-registry包 yum install -y docker-distribution   2:启动docker-distribution,默认监听于TCP/5000端口 sy ...

  8. 实验一 命令解释程序cmd的编写

    #include<stdio.h>#include<stdlib.h>#include<string.h>#define N 30main(){ char str[ ...

  9. PHP时间格式化参数表笔记

    date_create_from_format() 函数返回一个根据指定格式进行格式化的新的 DateTime 对象.通常需要配合date_format()函数使用 语法: date_create_f ...

  10. Linux_Nginx 安装

    官网:http://nginx.org/ 1.下载http://nginx.org/download/nginx-1.14.0.tar.gz 2.查看详情 [zwesy@localhost ~]$ l ...