hdu 1710 Binary Tree Traversals

来源:互联网 发布:数据库开发规范 编辑:程序博客网 时间:2024/05/21 08:40
/* ***********************************************Author        :xryzEmail         :523689985@qq.comCreated Time  :4-22 11:41:40File Name     :BinaryTreeTraversals.cpp************************************************ */#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;typedef struct node *tree;typedef struct node{    int data;    tree left;    tree right;};bool flag;tree root;int pro[1024],in[1024];tree gettree(int *a,int *b,int n)//递归建树{    tree t;    int i;    for(i=0;i<n;i++)    {        if(a[0]==b[i])        {            t=(tree)malloc(sizeof(struct node));            t->data=b[i];            t->left=gettree(a+1,b,i);            t->right=gettree(a+1+i,b+1+i,n-i-1);            return t;        }    }    return NULL;}void postorder(tree p)//后序遍历{    if(p!=NULL)    {        postorder(p->left);        postorder(p->right);        if(flag) printf(" ");        else flag++;        printf("%d",p->data);    }}int main(){    int i,n;    while(~scanf("%d",&n))    {        for(i=0;i<n;i++)            scanf("%d",&pro[i]);        for(i=0;i<n;i++)            scanf("%d",&in[i]);        root=gettree(pro,in,n);        flag=0;        postorder(root);        printf("\n");    }    return 0;}
0 0