#include<bits/stdc++.h>
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N=55;
string pre,mid;
int t,now,tot;
struct tree
{
char dat;
int l,r;
}tr[N];
int rebuild(int l,int r)
{
if(l>r)return 0;
int m;
for(int i=l;i<=r;i++)
{
if(pre[now]==mid[i])
{
m=i;
break;
}
}
tr[++tot].dat=pre[now++];
int root=tot;
tr[root].l=rebuild(l,m-1);
tr[root].r=rebuild(m+1,r);
return root;
}
void floorprint(int root)
{
queue<int> q;
if(root)
q.push(root);
while(q.size())
{
int u=q.front();
q.pop();
cout<<tr[u].dat;
if(tr[u].l)q.push(tr[u].l);
if(tr[u].r)q.push(tr[u].r);
}
}
void finalprint(int root)
{
if(root)
{
finalprint(tr[root].l);
finalprint(tr[root].r);
cout<<tr[root].dat;
}
}
int gethigh(int root)
{
if(!root)return 0;
return max(gethigh(tr[root].l),gethigh(tr[root].r))+1;
}
int main()
{
while(cin>>t)
{
cin>>pre>>mid;
tot=now=0;
int root=rebuild(0,pre.size()-1);
cout<<gethigh(root)<<endl;
}
return 0;
}
H - 数据结构实验之二叉树四:(先序中序)还原二叉树
最新推荐文章于 2024-09-26 22:55:54 发布