团体程序设计天梯赛 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
随机推荐
- dvwa学习笔记之xss
反射型Low 直接输入<script>alert(/xss/)</script>就可以发现弹窗Medium 检查源码 可以看到网站对输入字符进行了过滤,尝试双写绕过,构造< ...
- python之模块_随手记录的模块
目录 1.StringIO模块 2.string模块 3.pprint模块 4.struct模块 5.uuid模块 6.itertools 7.prettytable 1.StringIO (1)使用 ...
- CentOS中Intel i350T4驱动安装
2015.3.31 在linux*中直接按解决方法中安装i350驱动即可 *************************************************************** ...
- 炸弹人——NABCD分析
炸弹人——NABCD分析结果 N:需求:本软件应用于学生,学生可以在课余时间放松心情,缓解学习压力. A:做法:使用Cocosdx和Visual Studio 2010结合,之间用Python使其结合 ...
- beta冲刺(6/7)
目录 组员情况 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最新成果 团队签入记 ...
- android 的helloworld没跑起来 原因
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com. ...
- visual stdio2013软件安装及单元测试
visual stdio2013软件安装及单元测试 一.visual stdio2013软件安装详解 今天,笔者为大家带来如何在Windows10下完美安装Visual Studio 2013专业版. ...
- Maven解读:强大的依赖体系
Github地址:https://github.com/zwjlpeng/Maven_Detail Maven最大的好处就是能够很方便的管理项目对第三方Jar包的依赖,只需在Pom文件中添加几行配置文 ...
- 课堂作业:alpha发布点评
1. 新蜂 项目:游戏俄罗斯方块 基础玩法已实现,部分功能尚不完备,总的来说已经很出色了.不过希望下降加速那部分可以优化一下,不要按住↓加速,而是按一下就使当前方块加速下落至底部就好了. 2. 天 ...
- wpf后台设置颜色(背景色,前景色)
有时候你是不是也会遇到要在wpf后台给某个控件设置背景色或者给文字设置前景色的情况? 本人最近看到一个从自定义的combobox读取系统字体和颜色的实例,该实例实现了随字体combobox选项改变而改 ...