数据结构实验之二叉树二:遍历二叉树

数据结构实验之二叉树二:遍历二叉树

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

Input

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

Output

每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。

Sample Input

abc,,de,g,,f,,,

Sample Output

cbegdfacgefdba
#include <stdio.h>
#include <stdlib.h>

struct node
{
    char num;
    struct node *l,*r,*next;
};
int flog=-1;
char i[55];
struct node *kk()
{
    struct node *root;
    if(i[++flog]==',')
    {
        root= NULL;
    }
    else
    {
        root=(struct node *)malloc(sizeof(struct node));
        root->num=i[flog];
        root->l=kk();
        root->r=kk();
    }
    return root;
}

void zz(struct node *head)
{
    if(head==NULL)
        return ;
    zz(head->l);
    printf("%c",head->num);
    zz(head->r);
}
void gg(struct node *head)
{
    if(head==NULL)
        return ;
    gg(head->l);
    gg(head->r);
    printf("%c",head->num);
}
int main()
{
    struct node *head,*t;
    while(gets(i))
    {
        flog=-1;
        head=kk();
        t=head;
        zz(head);
        printf("\n");
        gg(t);
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/the_city_of_the__sky/article/details/80542387