HDU 5444 Elven Postman (2015 ACM/ICPC Asia Regional Changchun Online)

【题目链接】:click here~~

【题目大意】:

HDU
5444

题意:在最初为空的二叉树中不断的插入n个数。对于每个数,从根节点开始判断,如果当前节点为空,就插入当前节点,如果当前节点不为空,则小于当前节点的值,插入右子树,否则插入左子树。

接着q次询问,每次询问一个值在二叉树中从根节点开始的查找路径。

3

直接用二叉树模拟整个插入和询问的过程

代码:

/*
* Problem: HDU No.5444
* Running time: 0MS
* Complier: G++
* Author: javaherongwei
* Create Time: 12:15 2015/9/16 星期三
* binary search tree
*/
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>

using namespace std;
typedef long long LL;

struct BST  // binary serach tree
{
    int data;
    BST * leftchild;   //lson
    BST * rightchild;  //rson
    BST () {}
    BST(int x){        //init value
        data=x;
        leftchild=rightchild=NULL;
    }
};

void build(BST *&root,int key) // creat the tree
{
    if(key<root->data){
        if(NULL==root->leftchild){
            root->leftchild= new BST(key);
            return;
        }
        else build(root->leftchild,key);
    }
    else{
        if(NULL==root->rightchild){
            root->rightchild= new BST(key);
            return;
        }
        else build(root->rightchild,key);
    }
}

void get_path(BST *root,int key) // query
{
    if(root->data==key){
        puts("");
        return ;
    }
    else if(key<root->data){     // lson
        putchar('E');
        get_path(root->leftchild,key);
    }
    else{
        putchar('W');           //rson
        get_path(root->rightchild,key);
    }
}
int main()
{
    int t,rt,x,n,m;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        scanf("%d",&rt);
        BST *root= new BST(rt);
        for(int i=1; i<n; ++i){
            scanf("%d",&x);
            build(root,x);
        }
        scanf("%d",&m);
        int q;
        while(m--){
            scanf("%d",&q);
            get_path(root,q);
        }
        root=NULL;
    }
    return 0;
}
/*
Sample Input
2
4
2 1 4 3
3
1 2 3
6
6 5 4 3 2 1
1
1

Sample Output
E

WE
EEEEE
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 15:57:59

HDU 5444 Elven Postman (2015 ACM/ICPC Asia Regional Changchun Online)的相关文章

(并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2061    Accepted Submission(s): 711 Problem Description Jack likes to travel around the wo

(线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)

链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 738    Accepted Submission(s): 591 Problem Description In Land waterless, w

HDU 5458 Stability(双连通分量+LCA+并查集+树状数组)(2015 ACM/ICPC Asia Regional Shenyang Online)

题目大意:给一个N个点M条边的无向图,有Q个询问:1.删掉a.b之间所存在的边:2.询问有多少条边,单独删掉之后a与b不再连通. 思路:脑洞大开. 对于询问,首先想到的就是a与b之间有多少桥(割边),然后想到双连通分量,然而删边是个坑爹的问题,于是我们离线倒着来,把删边变成加边. 双连通分量这种东西呢,其实缩点连起来之后,就是一棵树辣. 然后询问两个点的时候,设根到点x的距离为dep[x],a.b的最近公共祖先为lca(a, b),那么询问query(a, b) = dep[a] + dep[b

HDU 5491 The Next 构造(2015 ACM/ICPC Asia Regional Hefei Online)

[链接]click here~~ [题意]: 给你一个D(0≤D<231),保证D的二进制中1的数量在s1和s2之间 然后让你求一个最小的数,使得这个数的二进制数量大于等于s1,小于等于s2,且大于 d [思路]虽然是比赛时候的一道水题,但是开始看到的时候并没有想到好的思路,最后还是学弟强行过掉,今天突然想到了可以用lowbit来求 首先看到D的范围是很大的,那么如何 构造呢? 这里举个例子:比如11,二进制表示(1011),取11+1=12,二进制表示(1100)s1=2,那么我们要做的就是考

(字符串处理)Fang Fang -- hdu -- 5455 (2015 ACM/ICPC Asia Regional Shenyang Online)

链接: http://acm.hdu.edu.cn/showproblem.php?pid=5455 Fang Fang Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 233    Accepted Submission(s): 110 Problem Description Fang Fang says she wants to be

hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)

Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 439    Accepted Submission(s): 155 Problem Description You are given a rooted tree of N nodes, labeled from 1 to N. To the ith node a

2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】

Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 591    Accepted Submission(s): 329 Problem Description Elves are very peculiar creatures. As we all know, they can live for a very

2015 ACM/ICPC Asia Regional Changchun Online Pro 1008 Elven Postman

Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0 Problem Description Elves are very peculiar creatures. As we all know, they can live for a very lon

2015 ACM/ICPC Asia Regional Changchun Online

1001 Alisha’s Party 1002 Ponds 1003 Aggregated Counting 1004 Clock Adjusting 1005 Travel 1006 Favorite Donut 1007 The Water Problem 1008 Elven Postman 1009 Food Problem 1010 Unknown Treasure 1011 Good Numbers 1012 Marisa’s Cake 1013 Robot Dog