题意:

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-二叉树的更多相关文章

  1. UVa 10562看图写树(二叉树遍历)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. Uva 10562 看图写树

    题目链接:https://uva.onlinejudge.org/external/105/10562.pdf 紫书P170 直接在二维数组上做DFS,用的fgets函数读入数据,比较gets函数安全 ...

  3. UVa 699 (二叉树) The Falling Leaves

    题意: 按先序方式输入一棵二叉树,节点是带权的,左孩子在父节点的左一个单位,右孩子在父节点的右一个单位,从左到右输出相同水平位置节点之和. 分析: 做了好几道二叉树的题,代码应该也很好理解了.这里ma ...

  4. UVa 548 (二叉树的递归遍历) Tree

    题意: 给出一棵由中序遍历和后序遍历确定的点带权的二叉树.然后找出一个根节点到叶子节点权值之和最小(如果相等选叶子节点权值最小的),输出最佳方案的叶子节点的权值. 二叉树有三种递归的遍历方式: 先序遍 ...

  5. UVa 122 (二叉树的层次遍历) Trees on the level

    题意: 输入一颗二叉树,按照(左右左右, 节点的值)的格式.然后从上到下从左到右依次输出各个节点的值,如果一个节点没有赋值或者多次赋值,则输出“not complete” 一.指针方式实现二叉树 首先 ...

  6. uva 10562

    二叉树的先序遍历  这个还是比较简单的 ~~ /************************************************************************* &g ...

  7. Uva 548 二叉树的递归遍历lrj 白书p155

    直接上代码... (另外也可以在递归的时候统计最优解,不过程序稍微复杂一点) #include <iostream> #include <string> #include &l ...

  8. UVA 679 二叉树

    题目链接:https://vjudge.net/problem/UVA-679 参考自:刘汝佳的紫书 思路: 我们发现,对于每一颗子树,假如小球是第奇数次到达这颗子树的根节点时,那么此时应该向左子树走 ...

  9. UVa 10562 Undraw the Trees 看图写树

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 10562Undraw the Trees 给定字符拼成的树,将 ...

  10. Trees on the level UVA - 122 (二叉树的层次遍历)

    题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...

随机推荐

  1. 更适合程序员使用的Vim配置 显示行号 语法高亮 智能缩进

    在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc.在启动vim时,当前用户根 ...

  2. 20155301 2016-2017-2 《Java程序设计》第9周学习总结

    20155301 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC全名Java DataBase Connectivity,是联机数据库的标准规范.具 ...

  3. The Suspects 并查集

    Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...

  4. nuclio dokcer 运行测试

    nuclio serverless 平台,可以方便的进行实时事件以及数据处理应用的开发 dcoker 运行 启动 docker run -d -p 8070:8070 -v /var/run/dock ...

  5. 实战:mysql检查物理磁盘中的二进制日志文件是否有丢失

    版权声明:日常札记,乐于分享 https://blog.csdn.net/yangzhawen/article/details/32103555 场景:有时候由于磁盘损坏或人为原因错误删除了磁盘中的二 ...

  6. [NN] 随机VS批训练

    本文翻译节选自1998-Efficient BackProp, Yann LeCun et al.. 4.1 随机VS批训练 每一次迭代, 传统训练方式都需要遍历所有数据集来计算平均梯度. 批训练也同 ...

  7. opencv mat flags含义

    f:\opencv\opencv\sources\modules\core\src\matrix.cpp:  flags = (_type & CV_MAT_TYPE_MASK) | MAGI ...

  8. js正则表达式30分钟入门教程

    2011-10-27 13:23:15 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要 ...

  9. Heritrix3.x自定义扩展Extractor

    一.引言: Heritrix3.x与Heritrix1.x版本差异比较大,全新配置模式的引入+扩展接口的变化,同时由于说明文档的匮乏,给Heritrix的开发者带来困惑,前面的文章已经就Heritri ...

  10. ApacheKylin笔记

    基本没有什么难度,只要照着官网上配置就行,这里有以下几点需要注意: HBase一定要用2.0以下的,切记.否则会报找不到方法的错误! 需要配置修改kylin.properties文件里的spark配置 ...