HDU5444 Elven Postman
按要求递归建树输出~
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1014;
struct node {
int data;
node * left;
node * right;
};
int pre[maxn],in[maxn],T,N,q,x;
void init () {
fill (pre,pre+maxn,0);
fill (in,in+maxn,0);
}
node * create (int preL,int preR,int inL,int inR) {
if (preL>preR) return NULL;
node * root=new node;
root->data=pre[preL];
int k;
for (k=inL;k<=inR;k++) {
if (in[k]==pre[preL]) break;
}
int numLeft=k-inL;
root->left=create(preL+1,preL+numLeft,inL,k-1);
root->right=create(preL+numLeft+1,preR,k+1,inR);
return root;
}
void dfs (node * root,int v) {
if (root->data==v) {
printf ("\n");
return;
}
if (v<root->data) printf ("E"),dfs (root->left,v);
else printf ("W"),dfs (root->right,v);
}
int main () {
scanf ("%d",&T);
while (T--) {
scanf ("%d",&N);
for (int i=1;i<=N;i++) in[i]=i;
for (int i=1;i<=N;i++) scanf ("%d",&pre[i]);
node * root=create(1,N,1,N);
scanf ("%d",&q);
for (int i=0;i<q;i++) scanf ("%d",&x),dfs (root,x);
}
return 0;
} 相关推荐
huimeiad 2020-11-23
82387067 2020-11-03
bbccaaa 2020-11-03
ljsfighting 2020-10-31
小马的学习笔记 2020-10-23
chenhaimeimeng 2020-09-15
充满诗意的联盟 2020-08-23
82387067 2020-08-15
bbccaaa 2020-07-28
ljsfighting 2020-07-28
ljsfighting 2020-07-18
ljsfighting 2020-07-05
Alassad 2020-06-29
Teamomc 2020-06-28
pushTop 2020-06-27
curiousL 2020-06-21
Teamomc 2020-06-12