#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
struct Node{
Node *rchild;
Node *lchild;
char data;
};
void preorder(Node *bt)
{
if(bt){
cout<<bt->data<<" ";
if(bt->lchild!=NULL)
preorder(bt->lchild);
if(bt->rchild!=NULL)
preorder(bt->rchild);
}
}
Node *bt;
char str1[20],str2[20];
Node *build(int l1,int e1,int l2,int e2){
int i,j;
int idx;
bt =new Node;
bt->data=str1[l1];
for(i=l2;i<=e2;i++){
if(str1[l1]==str2[i]){
idx=i;
break;
}
}
int e=0;
if(idx==l2) bt->lchild=NULL;
else{
for(i=l1+1;i<=e2;i++)
for(j=l2;j<i;j++){
if(str1[i]==str2[j])
e++;
}
bt->lchild=build(l1,e,l2,idx-1);
}
int E=0;
if(idx==e2)bt->rchild=NULL;
else{
for(i=l1+1;i<=e1;i++)
for(j=idx+1;j<=e2;j++){
if(str1[i]==str2[j])
E++;
}
bt->rchild=build(l1,E,idx+1,e2);
}
return bt;
}
int main()
{
//Node *bt;
cin>>str1;
cin>>str2;
int len1=strlen(str1);
int len2=strlen(str2);
bt=build(0,len1-1,0,len2-1);
preorder(bt);
system("pause");
return 0;
}
中序和层次建二叉树,并前序输出(代码未测试完成,敬请期待)
最新推荐文章于 2020-11-29 23:58:12 发布