#include<bits/stdc++.h>
using namespace std;
struct tree_node
{
tree_node *left_tree,*right_tree;
char data;
};
tree_node *create(char middle[],char finall[],int len)
{
if(len<=0)
return NULL;
int i;
tree_node *t;
t=new tree_node;
t->data=finall[len-1];
for(i=0; i<len; i++)
{
if(middle[i]==finall[len-1])
break;
}
t->left_tree=create(middle,finall,i);
t->right_tree=create(middle+i+1,finall+i,len-i-1);
return t;
}
void preorder(tree_node *root)
{
tree_node *t;
t=root;
if(t==NULL)
return;
cout<<t->data;
preorder(t->left_tree);
preorder(t->right_tree);
}
int main()
{
int n;
cin>>n;
while(n--)
{
tree_node *tree;
char middle[100],finall[100];
cin>>middle>>finall;
int len=strlen(middle);
tree=create(middle,finall,len);
preorder(tree);
cout<<endl;
}
return 0;
}
求二叉树的先序遍历
最新推荐文章于 2021-04-30 12:21:14 发布