二叉树的重建(递归实现)

来源:互联网 发布:js 数组转字符串 编辑:程序博客网 时间:2024/05/22 01:15

由前序遍历和中序遍历输出后序遍历

<span style="color:#000000;">#include<stdio.h>#include<string.h>void print_build(int n, char*s1, char* s2){    if(n <= 0)        return ;    int p = strchr(s2, s1[0])-s2;    print_build(p, s1+1, s2);    print_build(n-p-1, s1+p+1, s2+p+1);    printf("%c",s1[0]);}int main(){    char s1[20],s2[20];    while(~scanf("%s%s",s1, s2))/*输入前序遍历和中序遍历*/    {        int n = strlen(s1);        print_build(n, s1, s2);        printf("\n");    }    return 0;}</span>

有后序遍历和中序遍历输出前序遍历

<span style="color:#000000;">#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;void print_build(int n, char* s1, char* s2){    if(n<=0)        return ;    printf("%c",s1[0]);    int p = strchr(s2,s1[0])-s2;    print_build(p, s1+n-p, s2);    print_build(n-p-1,s1+1,s2+p+1);} int main(){    char s1[20],s2[20];    while(~scanf("%s%s",s1,s2))/*输入后序遍历和中序遍历*/    {        int n = strlen(s1);        reverse(s1,s1+n);        print_build(n, s1, s2);        printf("\n");    }    return 0;}</span>


0 0