PATA-1020. Tree Traversals (25)

来源:互联网 发布:mac 安装lamp 编辑:程序博客网 时间:2024/06/05 08:17

题意:

给中序,后序,输出层序遍历

#include<stdio.h>#include<stdlib.h>#include<iostream>#include <queue>using namespace std;int Back[105];int In[105];typedef struct node *TreeBin;struct node{    TreeBin left,right;    int data;};TreeBin CreatTree( int *In,int *Back,int n  ){    if(n==0)        return NULL;    TreeBin Tree=(TreeBin)malloc(sizeof(struct  node));    Tree->data=Back[n-1];    int pos=0;    for(int i=0;i<n;i++)    {        if(In[i]==Back[n-1])        {            pos=i;            break;        }    }    Tree->left=CreatTree(In,Back,pos);    Tree->right=CreatTree(In+pos+1,Back+pos,n-pos-1 );    return Tree;}void over(TreeBin T){    if(!T)        return ;    queue<TreeBin> q;    q.push(T);    int yes=1;    while(!q.empty())    {        if(!yes)            cout<<" ";        else            yes=0;        TreeBin s=q.front();        printf("%d",s->data);        if(s->left!=NULL)        {            q.push(s->left);        }        if(s->right!=NULL)        {            q.push(s->right);        }        q.pop();    }}int main(){    int n;    cin>>n;    for(int i=0;i<n;i++)    {        cin>>Back[i];    }    for(int i=0;i<n;i++)    {        cin>>In[i];    }    TreeBin T;    T=CreatTree( In,Back,n );    over(T);    return 0;}


0 0
原创粉丝点击