题目here

给你二叉搜索树的层序遍历,重构二叉搜索树,问到达节点的步骤

二叉搜索树练习题

#include<cstdio>
#include<cmath>
#include<queue>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
    int val;
    node *left,*right;
    node(int val):val(val),left(NULL),right(NULL){}
};
int a[1010];
node* build(node *root,int val)
{
    if(NULL==root)
    {
        root=new node(val);
    }
    else{
        if(val<root->val)root->left=build(root->left,val);
        else root->right=build(root->right,val);
    }
    return root;
}
void print(node *root,int val)
{
    if(val==root->val){
        puts("");
        return;
    }
    if(val<root->val){
        putchar('E');
        print(root->left,val);
    }
    else {
        putchar('W');
        print(root->right,val);
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++)scanf("%d",&a[i]);
        node *root=NULL;
        for(int i=0;i<n;i++){
            root=build(root,a[i]);
        }
        int Q;
        scanf("%d",&Q);
        while(Q--)
        {
            int val;
            scanf("%d",&val);
            print(root,val);
        }
    }
    return 0;
}

 

posted on 2015-09-19 10:32  kylehz  阅读(191)  评论(0)    收藏  举报