题目链接:

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. springboot添加事务

    (转自:http://www.cnblogs.com/xingzc/p/6029483.html) 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据 ...

  2. 【bzoj1097】[POI2007]旅游景点atr 状压dp+堆优化Dijkstra

    题目描述 FGD想从成都去上海旅游.在旅途中他希望经过一些城市并在那里欣赏风景,品尝风味小吃或者做其他的有趣的事情.经过这些城市的顺序不是完全随意的,比如说FGD不希望在刚吃过一顿大餐之后立刻去下一个 ...

  3. script error总结

    移动端的页面在控制台报出一个script error,通常的原因有一下几点: 1. 脚本引入错误 可能是脚本的地址不对,协议不对(http或https问题),本地host文件绑定的地址不对 2. 方法 ...

  4. 阿里系产品Xposed Hook检测机制原理分析

    阿里系产品Xposed Hook检测机制原理分析 导语: 在逆向分析android App过程中,我们时常用的用的Java层hook框架就是Xposed Hook框架了.一些应用程序厂商为了保护自家a ...

  5. docker (centOS 7) 使用笔记3 - docker swarm mode

    1. 什么是docker swarm mode docker engine自带的 容器管理 工具.功能比较早的 docker swarm 更多,且集成在docker engine里. (docker ...

  6. C++ 静态成员的类内初始化

    一般来说,关于C++类静态成员的初始化,并不会让人感到难以理解,但是提到C++ 静态成员的"类内初始化"那就容易迷糊了. 我们来看如下代码: //example.h #includ ...

  7. [openmp]使用嵌套互斥锁锁定变量

    本文出自:http://www.cnblogs.com/svitter 转载请注明出处. 如果有一个线程必须要同时加锁两次,只能用嵌套型锁函数 函数名称 描述 void omp_init_nest_l ...

  8. 【ZOJ4060】 Flippy Sequence(规律)

    题意:给定两个长度为n的01序列A和B,要求分别从两个序列中取两段将段中数字取反,使得A和B完全相同,求方案数 n<=1e6,sum(n)<=1e7 思路:现场8Y…… 将A和B异或之后问 ...

  9. 解决mariadb数据库服务无法开启

    我的系统Manjaro linux,安装的数据库为mariadb 10.1 1.安装数据库 pacman -S mariadb 2.配置数据库启动环境: mysql_install_db --user ...

  10. Qualcomm MPM introduction

    在 Qualcomm chip 裡有一個 hardware block 名為 MPM. 在 RPM CPU halts 後,MPM 會保持在 on 的狀態用來處理 全系統 sleep process ...