HDU 5444-二叉树的遍历+建树
来源:互联网 发布:淘宝介入后卖家的下场 编辑:程序博客网 时间:2024/05/11 03:29
题意:
一颗二叉树,有 n 个节点,给出n个节点的先序遍历,即左边小,右边大。之后给出数字m,然后给出m个节点,写出从根节点到m个节
点的路径,往右遍历即往西输出W,往左遍历即往东输出E。
输入:
2
4
2 1 4 3
3
1 2 3
6
6 5 4 3 2 1
1
1
输出:
E
WE
EEEEE
分析:
首先设立节点的属性:左节点,右节点。(由于已经从题意中看出来是给出二叉树的先序遍历,因此不用在设置根节点) 之后再递
归建树,并且在递归建树的过程中判断路径。建立左节点输出E,建立右节点就输出W。省下了建好树后再继续遍历的时间。
代码:
#include <cstdio>#include <string>#include <cstring>#include <iostream>#include <algorithm>using namespace std;string str[1005];struct Node{ int l; int r;//s[0]右节点,s[1]左节点} nodes[1005];void add_node(int left, int &right) //递归建树{ if(left > right) { if(nodes[left].l == -1) //没有节点 { nodes[left].l = right; //建立数值小的节点 str[right] = str[left] + "E"; //往左走 } else //有节点或者已经建好节点 add_node(nodes[left].l, right); } else { if(nodes[left].r == -1) { nodes[left].r = right; //建立数值大的节点 str[right] = str[left] + "W"; //往右走 } else add_node(nodes[left].r, right); }}int main(){ int k,n,m,T,a[1005]; scanf("%d",&T); while(T--) { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= n; i++) nodes[i].r = nodes[i].l = -1;//初始化 str[a[1]] = ""; //初始化 for(int i = 2; i <= n; i++) //默认第一个节点是根节点 add_node(a[1], a[i]); scanf("%d",&m); for(int i = 1; i <= m; i++) { scanf("%d", &k); cout << str[k] << endl; } } return 0;}
0 0
- HDU 5444-二叉树的遍历+建树
- HDU 5444 二叉树的遍历,先根据先序遍历建树
- 数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
- BST二叉搜索树的建树和先序遍历
- 二叉搜索树的建树和中序遍历操作
- 已知二叉树的两种遍历序列重建树
- 20170816(二叉树的建树与遍历 计算几何 信心)
- 二叉树——不建树遍历
- 二叉树的建树方法
- hdu-5444(简单建树和遍历)
- hdu 5444Elven Postman(建树,遍历)
- 用两个遍历建树——树的遍历、玩转二叉树
- 二叉树的基本操作(非递归前中后遍历,先序,表达式建树,复制二叉树)
- 数据结构实验 建树+线索化二叉树+线索二叉树的遍历
- 二叉树建树、递归遍历、非递归遍历
- 数据结构六:二叉树的先序建树与中序的非递归遍历算法
- 二叉树的操作(建树,先序遍历,交换左右子树,销毁
- 层次遍历方法建树,用队。实现树与孩子兄弟二叉链表的转化!
- 第一天的Android学习
- sqlite3_column
- JDBC查看数据表结构
- 实用工具:VS上python开发插件(python tools for visual studio)
- Java入门级知识小结
- HDU 5444-二叉树的遍历+建树
- poj3155 Hard Life 【最大密度图 01分数规划】
- ActiveMQ学习(四)企业级应用配置详解
- php生成随机验证码
- 使用Windows API进行GDI窗口绘图
- 【HDU】-5326-Work(反向拓扑)
- HDU-2120-Ice_cream's world I【并查集】
- 大数据Spark “蘑菇云”行动前传第13课Scala模式匹配实战和Spark源码鉴赏
- 排序