hihocoder 1049 后续遍历

#include  
#include  
#include  
#include  
#include  
using namespace std;  
  
  
char preorder[30],midorder[30],endorder[30];  
typedef struct mynode Node;  
typedef Node* Tree;  
  
  
struct mynode  
{  
    char data;  
    struct mynode* left;  
    struct mynode* right;  
};  
  
  
  
  
int build(int left,int right,Tree &root)//更新了一下使用引用使结构更加清晰  
{  
    if(left>right)  
        return 0;  
    int i,j,flag = 1;  
    for(i=0; ileft = NULL;  
    root->right = NULL;  
  
  
    root->data = preorder[i];  
    build(left,j-1,root->left);  
    build(j+1,right,root->right);  
}  
  
  
void del(Tree root)  
{  
    if(root!=NULL)  
    {  
        del(root->left);  
        del(root->right);  
    }  
    if(root!=NULL)  
    {  
        free(root);  
        root = NULL;  
    }  
}  
int pos = 0;  
int endcal(Tree root)  
{  
    if(pos == strlen(preorder))  
        return 0;  
    if(root->left)  
    {  
        endcal(root->left);  
  
  
    }  
    if(root->right)  
    {  
        endcal(root->right);  
    }  
    endorder[pos++] = root->data;  
}  
  
  
int main()  
{  
  
  
    Tree root;  
    cin>>preorder>>midorder;  
    build(0,strlen(preorder)-1,root);  
    endcal(root);  
    cout<

代码可以AC不知道有没有内存泄漏 有错误请指出

下面是别人写的

#include  
#include  
#include  
#include  
using namespace std;  
  
char preorder[30],inorder[30],endorder[30];  
  
void endcal(const char *pre,const char *in,int len)  
{  
    if(len<1)  
        return ;  
    int i=0;  
    while(in[i]!=pre[0])i++;  
    endcal(pre+1,in,i);  
    endcal(pre+i+1,in+i+1,len-i-1);  
    cout<>preorder>>inorder;  
    endcal(preorder,inorder,strlen(preorder));  
}  

顺便给出前序遍历

#include  
#include  
#include  
#include  
using namespace std;  
  
char pre[30],in[30],last[30];  
  
void precal(char *last,char *in,int lastend,int inend)  
{  
    if(lastend<0||inend<1)  
        return ;  
    int i=0;  
    while(in[i]!=last[lastend-1])i++;  
    cout<>last>>in)  
        precal(last,in,strlen(last),strlen(in)),putchar('\n');  
}  

你可能感兴趣的:(hihocoder 1049 后续遍历)