题意:

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. X-Mirage苹果屏幕录制工具7天试用期破解 imsoft.cnblogs

    X-Mirage (PC) 能让你的 Windows 变成一个 iPhone.iPad 或者 iPod Touch 的屏幕镜像,应用程序.游戏.照片.视频等等一切可以在 iOS 移动端显示的东西,都镜 ...

  2. each遍历 的原理

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  3. 51Nod 1090: 3个数和为0

    1090 3个数和为0  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等. ...

  4. SUST OJ 1674: 入侵与反击(最长不下降子序列)

    1674: 入侵与反击 时间限制: 1 Sec  内存限制: 128 MB提交: 229  解决: 28[提交][状态][讨论版] 题目描述 A国部署的反导系统遇到了一个致命BUG,那就是每一次发射的 ...

  5. JS经典面试题

    自己总结了一些JS面试题 希望能够帮助正在找工作的程序猿(●´∀`●) 1.js 实现一个函数对javascript中json 对象进行克隆 var oldObject ="sdf" ...

  6. .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?

    .NET 中的 async / await 写异步代码用起来真的很爽,就像写同步一样.我们可以在各种各样的异步代码中看到 Task 返回值,这样大家便可以使用 await 等待这个方法.不过,有时需要 ...

  7. SharePoint PeopleEditor控件使用

    以下用于简要介绍在SharePoint 2016二次开发中如何使用PeopleEditor人员选择器,并采用前端的方式获取和设置值. 一.在使用的.aspx页面进行注册 <%@ Register ...

  8. 《DSP using MATLAB》Problem 4.14

    代码: %% ---------------------------------------------------------------------------- %% Output Info a ...

  9. streamsets 集成 rabbitmq 以及benthos stream 处理框架

    benthos 是一个stream 处理框架,streamsets 也是,但是两者可以通过不同的工具进行集成起来 一般我们可以使用http 服务,消息中间件(kafka.rabbitmq ...) 使 ...

  10. tomcat源码阅读之Server和Service接口解析

    tomcat中的服务器组件接口是Server接口,服务接口是Service,Server接口表示Catalina的整个servlet引擎,囊括了所有的组件,提供了一种优雅的方式来启动/关闭Catali ...