uva-10562-二叉树
2024-08-27 16:49:46
题意:
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;
}
感觉还是不能看别人题解!!!!!!!
最新文章
- Hadoop Shell命令大全
- LVS相关学习
- ecshop 进入后台登录帐号出现乱码解决方法
- 科谱,如何单机环境下合理的备份mssql2008数据库
- 代理和block反向传值
- JS语法部分-数组
- dapper 自定义数据库字段和代码中Model字段不一致时候的mapping方法
- inter
- codeforces 392B 	 Tower of Hanoi
- LINUX的命令(未完待续)
- 银行综合储蓄业务系统,水平为学了一年C语言
- Eclipse常用热键
- Shuffle 的 5步
- Java语言程序设计-Markdown格式作业模板
- 《MySQL必知必会》学习笔记_1
- js基础--获取浏览器当前页面的滚动条高度的兼容写法
- crawlspider_房多多
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- Docker for windows 入门二(Kitematic的使用)
- Java依赖注入方式
热门文章
- [LeetCode&;Python] Problem 821. Shortest Distance to a Character
- Shader的基本用法和语法结构
- hdu2083 简易版之最短距离 排序水题
- LeetCode-Microsoft-Add Two Numbers II
- php利用curl获取网页title内容
- JS实现表单多文件上传样式美化支持选中文件后删除相关项
- Apache+modjk布置tomcat集群
- 让node支持es模块化(export、import)的方法
- java 方向术语
- centos7 MFS drbd keepalived