九度OJ 1184:二叉树遍历 (二叉树)

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:3515

解决:1400

题目描述:

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入:

输入包括1行字符串,长度不超过100。

输出:

可能有多组测试数据,对于每组数据,
输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。

样例输入:
abc##de#g##f###
样例输出:
c b e g d f a 
来源:
2002年华中科技大学计算机研究生机试真题

思路:

这类题目,每道题的样例输入都相差很多,容易出错。

建树用数组即可。


代码:

#include<stdio.h>
#include<string.h>
int main()
{
        char a[101],b[101];
        int i,j,lens;
        while(gets(a))
        {
                lens=strlen(a);
                for(i=0;i<lens;i++)
                {
            if(a[i]=='#')
                        {
                                for(j=i-1;j>=0;j--)
                                {
                                        if(a[j]!='#')
                                        {
                                                printf("%c ",a[j]);
                                                a[j]='#';
                                                break;
                                        }
                                }
                        }
                         
                }
                printf("\n");
        }
        return 0;
}
/**************************************************************
    Problem: 1184
    User: liangrx06
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:912 kb
****************************************************************/



posted on 2015-10-26 11:08  梁山伯  阅读(138)  评论(0编辑  收藏  举报

导航