团体程序设计天梯赛-练习集 - L3-016 二叉搜索树的结构 (30 分)

简介: 团体程序设计天梯赛-练习集 - L3-016 二叉搜索树的结构 (30 分)

题目链接:点击打开链接

题目大意:略。

解题思路:image.pngAC 代码

#include<bits/stdc++.h>#include<cmath>#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007usingnamespacestd;
typedeflonglongll;
structnode{
intd;
node*left, *right;
};
unordered_map<int,int>lvl;
unordered_map<int,node*>fu;
node*insertBST(node*rt,intd,intl,node*fa)
{
if(rt==NULL)
    {
rt=newnode;
rt->left=rt->right=NULL;
rt->d=d;
lvl[d]=l;
if(fa==NULL) fa=rt;
fu[d]=fa;
returnrt;
    }
if(rt->d>d) rt->left=insertBST(rt->left,d,l+1,rt);
elseif(rt->d<d) rt->right=insertBST(rt->right,d,l+1,rt);
}
intmain()
{
intn,a,q,b;
stringts;
scanf("%d",&n);
node*tree=NULL;
for(inti=0;i<n;i++)
scanf("%d",&a),
tree=insertBST(tree,a,1,tree);
scanf("%d",&q);
while(q--)
    {
intf=0,flag=0;
cin>>a>>ts;
if(lvl[a]==0) flag=1;
if(ts[0]=='i')
        {
cin>>ts>>ts;
if(ts[1]=='o')
            {
if(!flag&&fu[a]->d==a) f=1;
            }
elseif(ts[0]=='p')
            {
cin>>ts>>b;
if(lvl[b]==0) flag=1;
if(!flag&&fu[b]->d==a&&a!=b) f=1;
            }
elseif(ts[0]=='l')
            {
cin>>ts>>ts>>b;
if(lvl[b]==0) flag=1;
if(!flag&&fu[a]->d!=a)
                {
node*l=fu[a]->left;
if(!flag&&l!=NULL&&l->d==a&&fu[a]->d==b) f=1;
                }
            }
elseif(ts[1]=='i')
            {
cin>>ts>>ts>>b;
if(lvl[b]==0) flag=1;
if(!flag&&fu[a]->d!=a)
                {
node*r=fu[a]->right;
if(!flag&&r!=NULL&&r->d==a&&fu[a]->d==b) f=1;
                }
            }
        }
else        {
cin>>b;
getline(cin,ts);
if(lvl[b]==0) flag=1;
if(ts[ts.length()-1]=='s')
            {
if(!flag&&fu[a]==fu[b]) f=1;
            }
else            {
if(!flag&&lvl[a]==lvl[b]) f=1;
            }
        }
if(flag==1) f=0;
puts(f?"Yes":"No");
    }
return0;
}
目录
相关文章
|
9月前
团体程序设计天梯赛-练习集L2篇⑦
团体程序设计天梯赛-练习集L2篇⑦
43 0
|
9月前
|
Perl
团体程序设计天梯赛-练习集L1篇③
团体程序设计天梯赛-练习集L1篇③
101 0
|
9月前
|
测试技术
团体程序设计天梯赛-练习集L2篇⑥
团体程序设计天梯赛-练习集L2篇⑥
62 0
|
11月前
|
C语言 C++
PTA团体程序设计天梯赛-练习集: L1-050 倒数第N个字符串 ( 15分 )
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。 输入格式: 输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。 输出格式: 在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。 输入样例:
127 0
|
人工智能
【CCCC】PAT : 团体程序设计天梯赛-练习集 L1 答案
【CCCC】PAT : 团体程序设计天梯赛-练习集 L1 答案
280 0
【CCCC】PAT : 团体程序设计天梯赛-练习集 L3 答案(01-23)
【CCCC】PAT : 团体程序设计天梯赛-练习集 L3 答案(01-23)
95 0
|
存储 人工智能
PTA团体程序设计天梯赛-练习集 L3-010 是否完全二叉搜索树(顺序存储)
PTA团体程序设计天梯赛-练习集 L3-010 是否完全二叉搜索树(顺序存储)
85 0
|
存储
PTA团体程序设计天梯赛-练习集 L2完全二叉树的层序遍历(递归)
PTA团体程序设计天梯赛-练习集 L2完全二叉树的层序遍历(递归)
101 0
团体程序设计天梯赛-练习集 - L2-002 链表去重(25 分)
团体程序设计天梯赛-练习集 - L2-002 链表去重(25 分)
96 0
团体程序设计天梯赛-练习集 - L2-012 关于堆的判断(25 分)
团体程序设计天梯赛-练习集 - L2-012 关于堆的判断(25 分)
74 0