HDU

来源:互联网 发布:傲虎网络 编辑:程序博客网 时间:2024/06/06 13:06


题意:

 其实就是给你一个序列让你构造一个二叉排序树,然后给你要访问的点,输出访问序列,左孩子输出E右孩子输出W,根节点输出""。

其实这个题有很多解法,在这里我就是存一下二叉排序树板子.手撸一个

#include<bits/stdc++.h>using namespace std;const int maxn = 1e3+5;int n;typedef struct node{int val;struct node *l;struct node *r;node(){}node(int x = 0){val = x;l = r = NULL;}};void build(int x,node *&T){if(T == NULL){T = new node(x);return ;}if(T -> val > x){build(x,T->l);}else{build(x,T->r);}return ;}void query(int x,node *T){if(T == NULL) return ;if(T -> val == x){puts("");return ;}if(T->val > x){cout<<'E';query(x,T->l);}if(T->val < x){cout<<'W';query(x,T->r);}return ;}int main(){int _,q;cin>>_;while(_--){int a;scanf("%d",&n);scanf("%d",&a);node *root = new node(a);for(int i = 2;i <= n;++i){scanf("%d",&a);build(a,root);}scanf("%d",&q);while(q--){scanf("%d",&a);query(a,root);}root = NULL;}return 0;}


原创粉丝点击