uva-10562-二叉树
题意:
Homer教授被报道失踪了,我们怀疑这和他最近的研究有关,但是我们确实不知道他最近在研究什么.
侦探们试图侵入他的电脑,再几次失败后才意思到教授的智力超出他们很多..........................................................
输入:
第一行输入一个数字表示树的数目(1<T<20),每个树的输入结尾以#结尾,从上到下的风格画树,
每个结点的标记字符是任意一个可的打印的字符,除了‘-’,‘|’,‘ ’空格,如果一个下面有一个'|'表示它有一个儿子,下一行是一行'-',至少覆盖子树的边缘,
输出:
先序遍历
#include <stdio.h>
#include<math.h>
#include <memory.h>
#include<queue>
#include <iostream>
using namespace std;
string dfs(int i, int j, int total); const int N = 220;
char map[N][N]; int findKey(int i, int j)
{
int kk = -1;
for (int k = j;; k++)
{
if (i != 0 && map[i - 1][k] == ' ')
return -1;
if (map[i][k] == '\0')
{
return -1;
}
if (map[i][k] == ' ')
continue;
kk = k;
break;
}
return kk;
}
string dfsSub(int i, int j, int total)
{
//有子树
while (j != 0 && map[i + 1][j - 1] == '-')
j--;
//找到key的开始
while (map[i + 2][j] == ' ')
j++;
return dfs(i + 2, j, total);
}
string dfs(int i, int j, int total)
{
string str = "";
if (i == total)
return str;
int next = -1;
if ((next = findKey(i, j)) == -1)
{
return str;
}
j = next;
str += map[i][next]; str = str + "(";
if (i + 1 != total && map[i + 1][j] == '|')
{
string s2 = dfsSub(i + 1, j, total);
str += s2;
}
str = str + ")";
//下一个key,注意上层的---
str += dfs(i, j + 1, total);
return str;
} int main()
{
//freopen("d:\\1.txt", "r", stdin); int n;
cin >> n;
getchar();
while (n--)
{
memset(map, 0, sizeof(map));
int total = 0;
while (true)
{
gets(map[total]);
if (map[total][0] == '#')
{
break;
}
total++;
}
string str = "(";
str += dfs(0, 0, total);
str += ")";
cout << str << endl;
}
return 0;
}
感觉还是不能看别人题解!!!!!!!
uva-10562-二叉树的更多相关文章
- UVa 10562看图写树(二叉树遍历)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Uva 10562 看图写树
题目链接:https://uva.onlinejudge.org/external/105/10562.pdf 紫书P170 直接在二维数组上做DFS,用的fgets函数读入数据,比较gets函数安全 ...
- UVa 699 (二叉树) The Falling Leaves
题意: 按先序方式输入一棵二叉树,节点是带权的,左孩子在父节点的左一个单位,右孩子在父节点的右一个单位,从左到右输出相同水平位置节点之和. 分析: 做了好几道二叉树的题,代码应该也很好理解了.这里ma ...
- UVa 548 (二叉树的递归遍历) Tree
题意: 给出一棵由中序遍历和后序遍历确定的点带权的二叉树.然后找出一个根节点到叶子节点权值之和最小(如果相等选叶子节点权值最小的),输出最佳方案的叶子节点的权值. 二叉树有三种递归的遍历方式: 先序遍 ...
- UVa 122 (二叉树的层次遍历) Trees on the level
题意: 输入一颗二叉树,按照(左右左右, 节点的值)的格式.然后从上到下从左到右依次输出各个节点的值,如果一个节点没有赋值或者多次赋值,则输出“not complete” 一.指针方式实现二叉树 首先 ...
- uva 10562
二叉树的先序遍历 这个还是比较简单的 ~~ /************************************************************************* &g ...
- Uva 548 二叉树的递归遍历lrj 白书p155
直接上代码... (另外也可以在递归的时候统计最优解,不过程序稍微复杂一点) #include <iostream> #include <string> #include &l ...
- UVA 679 二叉树
题目链接:https://vjudge.net/problem/UVA-679 参考自:刘汝佳的紫书 思路: 我们发现,对于每一颗子树,假如小球是第奇数次到达这颗子树的根节点时,那么此时应该向左子树走 ...
- UVa 10562 Undraw the Trees 看图写树
转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 10562Undraw the Trees 给定字符拼成的树,将 ...
- Trees on the level UVA - 122 (二叉树的层次遍历)
题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...
随机推荐
- Unity 3D游戏-NPC对话系统With XML
用XML做的Unity NPC对话系统 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Create X ...
- 20155315 2016-2017-2 《Java程序设计》第九周学习总结
教材学习内容总结 1.JDBC架构 数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网 ...
- BZOJ4899: 记忆的轮廓【概率期望DP】【决策单调性优化DP】
Description 通往贤者之塔的路上,有许多的危机. 我们可以把这个地形看做是一颗树,根节点编号为1,目标节点编号为n,其中1-n的简单路径上,编号依次递增, 在[1,n]中,一共有n个节点.我 ...
- 自动AC机
可以在lemon和cena环境下使用. #include<iostream> #include<cstdio> #include<cstring> #include ...
- Select2 用法
http://www.cnblogs.com/wuhuacong/p/4761637.html 2.这个做详细参考 http://www.jianshu.com/p/c5ab74b91b2e 3.ht ...
- hasura-graphql 集成 pipelinedb 1.0.0
pipelinedb 1.0.0 已经是一个标准的pg 扩展了,同时以前的语法也有变动,但是集成进hasura-graphql 更方便了 使用docker-compose 运行 环境准备 docker ...
- 微软通过.NET Native为Windows Store应用提速
.NET Native是微软的一次尝试,旨在降低Windows Store应用的启动时间和内存占用. 自从去年11月份,有人发现Windows Store应用的启动速度有了大幅提高后,对该项目的猜测就 ...
- 用cmd加密文件夹
随着电脑的广泛应用,个人电脑的私人空间越来越大,很多人喜欢把个人的一些私隐的文件存放在电脑上,私隐文件当然是不想别人看到的,为了防止别人看不见自己的文件,可以有很多的方法,今天在网上看了一些文档,学会 ...
- AtomicStampedReference、AtomicMarkableReference 区别
AtomicMarkableReference 描述的是更加简单的是与否的关系,它的定义就是将数据变换为true 或 false,通常ABA问题只有两种状态,AtomicMarkableReferen ...
- Oracle根据表的大小排序SQL语句
--按照数据行数排序select table_name,blocks,num_rows from dba_tables where owner not like '%SYS%' and table_n ...