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

来源:互联网 发布:阿里云邮箱登陆入口 编辑:程序博客网 时间:2024/05/17 09:22

题目描述

输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。

输入

第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。

输出

输出该二叉树的后序遍历序列。

示例输入

ABDCEFBDAECF

示例输出

DBEFCA
#include<stdio.h>#include<string.h>struct node{    char data;    struct node *lch,*rch;};void pai(char *xian,char *zhong,int len){       if(len==0)        return ;        node *t=new node;       t->data=*xian;       int i=0;       for(;i<len;i++)       {           if(zhong[i]==*xian)            break;       }       pai(xian+1,zhong,i);      pai(xian+i+1,zhong+i+1,len-i-1);      printf("%c",t->data);      return ;}int main(){    char zhong[100],xian[100];    int i,len;         gets(xian);         gets(zhong);        len=strlen(zhong);       pai(xian,zhong,len);       printf("\n");    return 0;}
这道题代码不长但是对我而言难度不小因为我递归不太熟悉更重要的是指针不会,然我认识到指针的重要性
这是一道二叉树的题目但又是有规律的,比如
先序ABCDEFGHIJK
中序DCEBFAIHJGK
后序DECBFIJHKGA
若要知道其中两个求另一个则必须知道中序
先序ABCDEFGHIJK
中序DCEBFAIHJGK
求后序
则先序的A是二叉树的根,然后在中序中找到A则A左边是第一个结点的左边的全部,A右边同样为右边的全部然后看先序的第二个看中序左边前i个有没有和他相同的
若有他就是下一个结点以此类推

0 0
原创粉丝点击