0分数据结构小白求助
  • 板块P1305 新二叉树
  • 楼主LMS_yr
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/2/19 13:09
  • 上次更新2023/10/28 08:11:59
查看原帖
0分数据结构小白求助
681120
LMS_yr楼主2022/2/19 13:09

感觉自己思路没啥问题,哭死

#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;
}
2022/2/19 13:09
加载中...