题目链接:

pid=5444http://">http://acm.hdu.edu.cn/showproblem.php?pid=5444

Elven Postman

Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)

Total Submission(s): 1206    Accepted Submission(s): 681
Problem Description
Elves are very peculiar creatures. As we all know, they can live for a very long time and their magical prowess are not something to be taken lightly. Also, they live on trees. However, there is something about them you may not know.
Although delivering stuffs through magical teleportation is extremely convenient (much like emails). They still sometimes prefer other more “traditional” methods.



So, as a elven postman, it is crucial to understand how to deliver the mail to the correct room of the tree. The elven tree always branches into no more than two paths upon intersection, either in the east direction or the west. It coincidentally looks awfully
like a binary tree we human computer scientist know. Not only that, when numbering the rooms, they always number the room number from the east-most position to the west. For rooms in the east are usually more preferable and more expensive due to they having
the privilege to see the sunrise, which matters a lot in elven culture.



Anyways, the elves usually wrote down all the rooms in a sequence at the root of the tree so that the postman may know how to deliver the mail. The sequence is written as follows, it will go straight to visit the east-most room and write down every room it
encountered along the way. After the first room is reached, it will then go to the next unvisited east-most room, writing down every unvisited room on the way as well until all rooms are visited.



Your task is to determine how to reach a certain room given the sequence written on the root.



For instance, the sequence 2, 1, 4, 3 would be written on the root of the following tree.



 
Input
First you are given an integer
T(T≤10)
indicating the number of test cases.



For each test case, there is a number n(n≤1000)
on a line representing the number of rooms in this tree.
n
integers representing the sequence written at the root follow, respectively
a1,...,an
where a1,...,an∈{1,...,n}.



On the next line, there is a number q
representing the number of mails to be sent. After that, there will be
q
integers x1,...,xq
indicating the destination room number of each mail.
 
Output
For each query, output a sequence of move (E
or W)
the postman needs to make to deliver the mail. For that
E
means that the postman should move up the eastern branch and
W
the western one. If the destination is on the root, just output a blank line would suffice.



Note that for simplicity, we assume the postman always starts from the root regardless of the room he had just visited.
 
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
 
Source
 
Recommend
hujie   |   We have carefully selected several similar problems for you:  

pid=5664" target="_blank">5664 

pid=5663" target="_blank">5663 

pid=5662" target="_blank">5662 5661 5660 

 

题目大意:给n个结点,第一个输入的为给一个根节点,接下的一些结点比根节点小就挂在左边,比根节点大就挂在根节点的右边。以此类推。

。。。

给出q个询问。询问每一个从根节点出发到某个点的路径。

解题思路:一个点一个点的加进去就好了。和根节点进行比較,最后遍历二叉树查找就可以。

详见代码。

#include <iostream>
#include <cstdio> using namespace std; struct node
{
int data;
node *leftchild,*rightchild;
node (int st)
{
data=st;
leftchild=rightchild=NULL;
}
}; void creat(node *root,int num)
{
if (root->data>num)
{
if (root->leftchild==NULL)
{
node *n=new node(num);
root->leftchild=n;
}
else
{
creat(root->leftchild,num);
}
}
else
{
if (root->rightchild==NULL)
{
node *n=new node(num);
root->rightchild=n;
}
else
{
creat(root->rightchild,num);
}
}
} void get_path(node *root,int x)
{
if (root->data==x)
{
puts("");
return ;
}
else if (root->data>x)
{
putchar('E');
get_path(root->leftchild,x);
}
else
{
putchar('W');
get_path(root->rightchild,x);
}
} int main()
{
int t;
int a;
scanf("%d",&t);
while (t--)
{
int n;
scanf("%d",&n);
int st;
scanf("%d",&st);
node *root=new node(st); for (int i=1;i<n;i++)
{
scanf("%d",&a);
creat(root,a);
}
int q,qq;
scanf("%d",&q);
for (int i=0;i<q;i++)
{
scanf("%d",&qq);
get_path(root,qq);
}
}
return 0;
}

hdu 5444 Elven Postman(长春网路赛——平衡二叉树遍历)的更多相关文章

  1. hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online

    很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死…… 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了……没了! 反复读题,终于在偶然间 ...

  2. hdu 5444 Elven Postman

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Description Elves are very peculia ...

  3. Hdu 5444 Elven Postman dfs

    Elven Postman Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  4. 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)T ...

  5. hdu 5444 Elven Postman 二叉树

    Time Limit: 1500/1000 MS (Java/Others)   Memory Limit: 131072/131072 K (Java/Others) Problem Descrip ...

  6. hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...

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

    Elven Postman Elves are very peculiar creatures. As we all know, they can live for a very long time ...

  8. HDU 5444 Elven Postman 二叉排序树

    HDU 5444 题意:给你一棵树的先序遍历,中序遍历默认是1...n,然后q个查询,问根节点到该点的路径(题意挺难懂,还是我太傻逼) 思路:这他妈又是个大水题,可是我还是太傻逼.1000个点的树,居 ...

  9. HDU 5444 Elven Postman (二叉树,暴力搜索)

    题意:给出一颗二叉树的先序遍历,默认的中序遍历是1..2.……n.给出q个询问,询问从根节点出发到某个点的路径. 析:本来以为是要建树的,一想,原来不用,其实它给的数是按顺序给的,只要搜结点就行,从根 ...

随机推荐

  1. 【转】DontDestroyOnLoad(Unity3D开发之五)

    原文  http://blog.csdn.net/cocos2der/article/details/38320773 主题 Unity3D Unity中我们从A场景切换到B场景的时候,A场景所有对象 ...

  2. call、apply与bind在理解

    call() 方法在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法. fun.call(thisArg[, arg1[, arg2[, ...]]]) apply() 方法 ...

  3. BZOJ 1787: [Ahoi2008]Meet 紧急集合(lca+贪心)

    [Ahoi2008]Meet 紧急集合 Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 ...

  4. P4555 最长双回文串

    题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为 n的串 S ,求 S的最长双回文子串 T ,即可将 ...

  5. iOS多线程:『GCD』详尽总结 ---(转)

    文章:https://bujige.net/blog/iOS-Complete-learning-GCD.html 文中 Demo 我已放在了 Github 上,Demo 链接:https://git ...

  6. git常用命令符

    全局配置 $ git config --global user.name "姓名" 告诉git你是谁 $ git config --global user.email " ...

  7. response contentType

    response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. 例如web浏览器就是通过MI ...

  8. 怎样让enum枚举支持string

    原文发布时间为:2011-03-02 -- 来源于本人的百度文章 [由搬家工具导入] 大家都知道enum是以下两种情况,不能支持string 1,enum类型是静态 2,enum类型仅限于long、i ...

  9. [翻译]现代Linux系统上的栈溢出攻击【转】

    转自:http://www.codeweblog.com/%E7%BF%BB%E8%AF%91-%E7%8E%B0%E4%BB%A3linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E ...

  10. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: