数据结构上机测试4.1:二叉树的遍历与应用1

Problem Description
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
Input
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
Output
输出该二叉树的后序遍历序列。
Example Input

ABDCEF
BDAECF

Example Output

DBEFCA


先序遍历的第一个为根节点,再在中序遍历中找到根节点的位置,根节点左边为左子树,右边为右子树,之后在左右子树重复之前的操作。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
    char date;
    struct node *l,*r;
}tree;
tree *creat(int len,char s[60],char h[60])
{
    int i;
    tree *t;
    if(len<=0)
        return NULL;
    t=(tree *)malloc(sizeof(tree));
    t->date=s[0];
    for(i=0;i<len;i++)
    {
        if(h[i]==s[0])
            break;
    }
    t->l=creat(i,s+1,h);
    t->r=creat(len-i-1,s+i+1,h+i+1);
    return t;
}
void show(tree *root)
{
    if(root)
    {
        show(root->l);
        show(root->r);
        printf("%c",root->date );
    }
}
int main()
{
    tree *root;
    char s[60],h[60];
    int len;
    scanf("%s %s",s,h);
    len=strlen(h);
    root=creat(len,s,h);
    show(root);
    printf("\n");
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值