HDU 1710 (二叉树的前序和中序,求后序)

时间:2022-11-20 21:09:02

题目链接

题目大意:

输入二叉树的前序、中序遍历,请输出它的后序遍历

#include <stdio.h>
#include <string.h>
;

// 长度为n     s1 前序     s2 中序   构造后序s3
void build(int n, char * s1, char * s2, char * s3)
{
    ) return;
    ]) - s2;  //找到根节点在中序遍历中的位置
    build(p, s1 + , s2, s3);          //递归左子树的后序遍历
    build(n - p - , s1 + p + , s2 + p + , s3 + p);  //递归右子树的后序遍历
    s3[n - ] = s1[];   //把根节点添加到最后
}

int main()
{
    int n;
    char s1[MAXN], s2[MAXN], s3[MAXN];
    while (scanf("%d",&n)!=EOF)
    {
        scanf("%s%s", s1, s2);
        build(n, s1, s2, s3);
        s3[n] = '\0';            //这一步一定要注意
        printf("%s\n", s3);

    }
    ;
}

2018-04-01