#include<bits/stdc++.h>
using namespace std;
struct tree
{
char ch;
struct tree *lc,*rc;
};
struct tree * creat(char *pre,char *in,int len)
{
if(len<=0)
return NULL;
struct tree *node;
node=(struct tree *)malloc(sizeof(struct tree));
node->ch=*pre;
char *t;
for(t=in; t; t++)
if(*t==*pre)
break;
int lt=t-in;
node->lc=creat(pre+1,in,lt);
node->rc=creat(pre+1+lt,t+1,len-lt-1);
return node;
}
int deep(struct tree *t)
{
int d=0;
if(t)
{
int l=deep(t->lc);
int r=deep(t->rc);
d=l>r?l+1:r+1;
}
return d;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
char pre[55];
char in[55];
struct tree *root;
scanf("%s%s",pre,in);
root=creat(pre,in,n);
printf("%d\n",deep(root));
}
}
SDUT3343数据结构实验之二叉树四:还原二叉树
最新推荐文章于 2021-06-25 19:14:25 发布