求助大佬
查看原帖
求助大佬
365433
Mark_M楼主2022/8/3 15:18
#include <bits/stdc++.h>
using namespace std;
string in,pos;
struct TNode{
    char data;
    TNode *lchild,*rchild;
    TNode(){
        lchild=rchild=nullptr;
    }
    TNode(char d,TNode *l,TNode *r){
        data=d;
        lchild=l;
        rchild=r;
    }
};

void PreTraverse(TNode *root)
{
    //if(root==nullptr) return;
    cout<<root->data<<" ";
    if(root->lchild!=nullptr) PreTraverse(root->lchild);
    if(root->rchild!=nullptr) PreTraverse(root->rchild);
}

TNode *build(TNode *node,int IL,int IR,int PL,int PR){
    if(PL>=PR){
        node=new TNode(pos[PR],nullptr,nullptr);
        return node;
    }
    char val=pos[PR];
    int p;
    for(int i=IL;i<=IR;i++){
        if(in[i]==val){
            p=i;
            break;
        }
    }
    int x=p-IL;
    node=new TNode(val,nullptr,nullptr);
    node->lchild=build(node->lchild,IL,p-1,PL,PL+x-1);
    node->rchild=build(node->rchild,p+1,IR,PL+x,PR-1);
    return node;
}

int main(){
    cin>>in>>pos;
    TNode *root=nullptr;
    root=build(root,0,in.size(),0,pos.size());
    PreTraverse(root);
    return 0;
}

2022/8/3 15:18
加载中...