感觉自己思路没啥问题,哭死
#include<iostream>
#include<string>
#include<queue>
using namespace std;
char ch[30][3];
typedef struct Node
{
Node *lc;
Node *rc;
char data;
}Node;
void tree(char a[30][3],int i,Node *root)
{
queue<Node*> q1;
if(i==1)
{
root->data=a[1][0];
q1.push(root);
if(a[1][1]!='*')
{
Node *m;
m=new Node;
m->data=a[1][1];
root->lc=m;
}
if(a[1][2]!='*')
{
Node *n;
n=new Node;
n->data=a[1][2];
root->rc=n;
}
}
else
{
Node *m,*n;
Node *s;
while(!q1.empty())
{
s=q1.back();
if(s->data==a[i][0])
{
break;
}
if(s->lc||s->rc)
{
q1.pop();
}
if(s->lc!=NULL)
q1.push(s->lc);
if(s->rc!=NULL)
q1.push(s->rc);
}
if(a[i][1]!='*')
{
m=new Node;
s->lc=m;
m->data=a[i][1];
}
if(a[i][2]!='*')
{
n=new Node;
s->rc=n;
n->data=a[i][2];
}
}
}
void preorder(Node *p)
{
if(p==NULL)
{
return;
}
cout<<p->data;
preorder(p->lc);
preorder(p->rc);
}
int main()
{
int n;
cin>>n;
Node *s;
s=new Node;
for(int i=1;i<=n;i++)
{
cin>>ch[i];
tree(ch,i,s);
}
preorder(s);
return 0;
}