概述
问题描述:根据后序和中序,然后给定一些判断语句,判断该语句是否正确。
解题思路:首先是建树,然后判断语句。如何来输入语句和读懂语句意思?一个一个单词的读。然后判断关键词。返回问题的句意,并得到A、B的值,然后判断。
AC代码:
#include<iostream>
#include<vector>
#include<cstdio>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
#define MAX 40
struct node{
int l,r,d,p;
node(){}
node(int l,int r,int d,int p):l(l),r(r),d(d),p(p){}
};
map<int,node>arr;
int po[MAX],in[MAX],N,A,B;
bool flag=0;
string str;
int tree(int poR,int inL,int inR,int de,int pa)
{
if(inL>inR)return -1;
int i=inL;
while(in[i]!=po[poR])++i;
arr[po[poR]].p=pa;
arr[po[poR]].d=de;
arr[po[poR]].l=tree(poR-(inR-i)-1,inL,i-1,de+1,po[poR]);
arr[po[poR]].r=tree(poR-1,i+1,inR,de+1,po[poR]);
if((arr[po[poR]].r==-1&&arr[po[poR]].l!=-1)||(arr[po[poR]].r!=-1&&arr[po[poR]].l==-1))flag=1;
return po[poR];
}
int input()
{
int i;
cin>>str;
if(str[0]>='0'&&str[0]<='9'){
i=0;A=0;
while(i<str.length()){A=A*10+str[i]-'0';++i;}
cin>>str;
if(str=="and"){
scanf("%d",&B);
cin>>str;cin>>str;
if(str=="siblings"){
return 2;
}else{
i=3;
while(i--){cin>>str;}
return 6;
}
}else{
cin>>str;cin>>str;
if(str=="root")return 1;
else if(str=="parent"){
cin>>str;scanf("%d",&B);
return 3;
}else if(str=="left"){
cin>>str;cin>>str;scanf("%d",&B);
return 4;
}else if(str=="right"){
cin>>str;cin>>str;scanf("%d",&B);
return 5;
}
}
}else{
i=4;
while(i--)cin>>str;
return 7;
}
}
int main()
{
//freopen("test.txt","r",stdin);
scanf("%d",&N);
for(int i=0;i<N;++i)scanf("%d",&po[i]);
for(int i=0;i<N;++i)scanf("%d",&in[i]);
int root=tree(N-1,0,N-1,0,-1);
scanf("%d",&N);
while(N--){
int x=input();
bool f=0;
if(x==1){
if(A!=root)f=1;
}else if(x==2){
if(arr[A].p!=arr[B].p)f=1;
}else if(x==3){
if(arr[B].p!=A)f=1;
}else if(x==4){
if(arr[B].l!=A)f=1;
}else if(x==5){
if(arr[B].r!=A)f=1;
}else if(x==6){
if(arr[B].d!=arr[A].d)f=1;
}else if(x==7){
if(flag)f=1;
}
if(f)printf("Non");
else printf("Yesn");
}
return 0;
}
最后
以上就是平常小伙为你收集整理的7-4 Structure of a Binary Tree (30 分)的全部内容,希望文章能够帮你解决7-4 Structure of a Binary Tree (30 分)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复