二叉树的先序遍历 这个还是比较简单的 ~~
/*************************************************************************
> Author: xlc2845 > Mail: xlc2845@gmail.com
> Created Time: 2013年10月30日 星期三 19时25分21秒
************************************************************************/ #include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
char tree[300][300]; void dfs(int l, int r, int cur)
{
putchar('(');
for (int i = l; i < r && tree[cur][i]; i++)
if (tree[cur][i] != '#' && tree[cur][i] != ' ')
{
putchar(tree[cur][i]);
if (tree[cur + 1][i] == '|')
{
int le, re;
for (le = i; le > 0 && tree[cur + 2][le] == '-'; le--);
for (re = i; tree[cur + 2][re] == '-'; re++);
dfs(le, re, cur + 3);
}
else
printf("()");
}
putchar(')');
} int main()
{
int t, n;
scanf("%d\n", &t);
while (t--)
{
memset(tree, 0, sizeof(tree));
n = 0;
while (gets(tree[n]) != NULL)
{
if(tree[n][0] == '#')
break;
n++;
}
dfs(0, strlen(tree[0]), 0);
puts("");
}
return 0;
}