EOJ 1813 树重建


#include 
#include 
#include 
typedef struct node//构建二叉树的节点
{
    struct node*left;
    struct node*right;
    char ele;
}Tree;
void last(char *mid,char *pre,int len)
{
    if(len==0)//如果长度为0,直接返回
        return;
    Tree* a=new Tree;//创建一个节点
    a->ele=*pre;//a的值为前序遍历此时的头结点
    int root=0;
    for(;rootele);//每次递归调用后打印节点值
}
int main()
{
    char a[100],b[100];
    int n;
    scanf("%s%s",a,b);
    n=strlen(a);//计算a的长度
    last(b,a,n);
    printf("\n");
    return 0;
}

此题应该注意,树的前序排列为每个树的根节点,在中序排列中此节点左边为左子树,右边为右子树。每次循环,寻找根节点在中序遍历中的位置,找到以后,对两边进行递归调用,要注意每次调用的头结点与长度。

你可能感兴趣的:(数据结构)