对二叉树理解(一)的多组处理

本文详细介绍了如何通过扩展的先序序列建立二叉树,并实现先序、中序和后序遍历,提供了完整的C语言代码示例,帮助读者理解和掌握二叉树的基本操作。

二叉树(1)

Time Limit:1000MS  Memory Limit:65536K
Total Submit:199 Accepted:83

Description

1、 按扩展的先序序列(即包括空结点)输入二叉树的各结点,建立二叉树,并输出其先序、中序和后序遍历序列。

1210.jpg


如图所示的二叉树的扩展的先序序列为:ABD111C E11F11(1代表空结点)

Input

输入有多组例子,每组数组占一行;

Output

输出对应的结果,每组结果占三行。

Sample Input

ABD111CE11F11

Sample Output

ABDCEF
DBAECF
DBEFCA

#include<stdio.h>
#include<stdlib.h>
char str[1000];
int i;
typedef struct node
{
    char data;
    struct node *lchild,*rchild;
}Tnode,*Tree;
int m=sizeof(Tnode);
Tree newnode()//新节点建立
{
    Tree p;
    p=(Tree)malloc(m);
    p->lchild=NULL;
    p->rchild=NULL;
    return p;
}
void Creat(Tree p)
{
    Tree s,q;
    if(str[i]=='1')
    {
        p->data=NULL;
        return ;
    }
    else
    {
        p->data=str[i];
        s=newnode();
        p->lchild=s;
        i++;
        Creat(s);
    }
    q=newnode();
    p->rchild=q;
    i++;
    Creat(q);
}
void pre(Tree t)
{
    if(t!=NULL)
    {
        if(t->data!=NULL)
            printf("%c",t->data);
        pre(t->lchild);
        pre(t->rchild);
    }
}
void in(Tree t)
{
    if(t)
    {
        in(t->lchild);
        if(t->data!=NULL)
            printf("%c",t->data);
        in(t->rchild);
    }
}
void post(Tree t)
{
    if(t)
    {
        post(t->lchild);
        post(t->rchild);
        if(t->data!=NULL)
            printf("%c",t->data);
    }
}


int main()
{
    Tree t;
    while(gets(str))
    {
        i=0;
        t=newnode();
        Creat(t);
        pre(t);
        printf("\n");
        in(t);
        printf("\n");
        post(t);
        printf("\n");
    }
    return 0;
}

  

  

转载于:https://www.cnblogs.com/world-ding/articles/2114235.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值