hdu 5444 Elven Postman(长春网路赛——平衡二叉树遍历)
题目链接: pid=5444http://">http://acm.hdu.edu.cn/showproblem.php?pid=5444
Elven Postman
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.
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
a
where a
On the next line, there is a number q
representing the number of mails to be sent. After that, there will be
q
integers x
indicating the destination room number of each mail.
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.
2
4
2 1 4 3
3
1 2 3
6
6 5 4 3 2 1
1
1
E WE
EEEEE
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(长春网路赛——平衡二叉树遍历)的更多相关文章
- hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online
很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死…… 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了……没了! 反复读题,终于在偶然间 ...
- hdu 5444 Elven Postman
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Description Elves are very peculia ...
- Hdu 5444 Elven Postman dfs
Elven Postman Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- 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 ...
- hdu 5444 Elven Postman 二叉树
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem Descrip ...
- 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 ...
- 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 ...
- HDU 5444 Elven Postman 二叉排序树
HDU 5444 题意:给你一棵树的先序遍历,中序遍历默认是1...n,然后q个查询,问根节点到该点的路径(题意挺难懂,还是我太傻逼) 思路:这他妈又是个大水题,可是我还是太傻逼.1000个点的树,居 ...
- HDU 5444 Elven Postman (二叉树,暴力搜索)
题意:给出一颗二叉树的先序遍历,默认的中序遍历是1..2.……n.给出q个询问,询问从根节点出发到某个点的路径. 析:本来以为是要建树的,一想,原来不用,其实它给的数是按顺序给的,只要搜结点就行,从根 ...
随机推荐
- BZOJ3999 [TJOI2015]旅游 【树剖 + 线段树】
题目 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会选择从A城市买入再 ...
- imx6 PCIE使能加载ath9k无线网卡
imx6q配置pcie无线网卡遇到如下问题: imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00 pci_bus 0000:00: root ...
- css选择器位置和数量技巧
1. 除去首个元素 li:not(:first-child) li + li li:first-child ~ li 2. 第1-3个元素 li:nth-child(-n+3) 3. 除去第1-3个元 ...
- 微信小程序微信支付流程
1.小程序调用wx.login获取登录凭证code wx.login(无请求参数)返回code(有效期5分钟) wx.login({ success:function(res){ //get res. ...
- 雪人(snowman)
test1025 五子棋(fir) 依照题意模拟即可,先判是否合法,然后在判是否胜利 迷宫(maze) 折半搜素裸题 雪人(snowman) 二分+hash a1-b1=a2-b2=a3-b3 等价于 ...
- 为Eclipse添加反编译插件,更好的调试
为Eclipse添加反编译插件,更好的调试 一般来说,我们的项目或多或少的都会引用一些外部jar包,如果可以查看jar包的源代码,对于我们的调试可以说是事半功倍. 1.下载并安装jad.exe.将ja ...
- LESS CSS使用方法 , CSS也能跟JS一样玩
本文转自 http://blog.csdn.net/xuyonghong1122/article/details/51986472 在使用CSS的时候,总会有这个想法 这个属性值老是重复写好烦 这个 ...
- react 复习4- 生命周期
实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getI ...
- linux下的用户管理(一)
linux下有三类用户: 1.超级用户:root具有操作系统的一切权限,UID值为0的是超级用户 2.普通用户:只具有操作系统有限的权限,UID是从500到6000范围 3.伪用户:是为了方便系统管理 ...
- maven中的继承和聚合的关系
maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置.聚合:定义一个聚合模块,然后在pom文件中添加<module></mo ...