#include <iostream>
#include <cstdlib>
using namespace std;
struct node
{
char data;
struct node *lchild,*rchild;
};
struct node *creat(int n,char a[],char b[])
{
char *p;
struct node *root;
if(n==0) return NULL;
root=(struct node *)malloc(sizeof(struct node));
root->data=a[0];
for(p=b;p!='\0';p++)
if(*p==a[0]) break;
int t;
t=p-b;
root->lchild=creat(t,a+1,b);
root->rchild=creat(n-t-1,a+t+1,p+1);
return root;
};
int deep(struct node *root)
{
int d=0;
if(root!=NULL)
{
int l1=deep(root->lchild);
int l2=deep(root->rchild);
d=l1>l2?l1+1:l2+1;
}
return d;
}
int main()
{
int n,m,j,i,k;
char a[101],b[101];
while(cin>>n)
{
struct node *root;
cin>>a>>b;
root=creat(n,a,b);
m=deep(root);
cout<<m<<endl;
}
return 0;
}
数据结构实验之二叉树四:还原二叉树
最新推荐文章于 2021-06-20 18:08:22 发布