蒟蒻爆0求助,在本地编译器上结果出来了,但莫名其妙地在输出完后卡死了~~哪位dalao能帮帮我
#include <bits/stdc++.h>
using namespace std;
struct node
{
char value;
node *lchild,*rchild;
node(void) :value(0),lchild(nullptr),rchild(nullptr) {}
node(char c) :value(c),lchild(nullptr),rchild(nullptr) {}
};
class binary_tree
{
public:
binary_tree(void) :__root(*(new node)) {}
~binary_tree(void) {cut(root());}
inline node* root(void) {return &__root;}
void cut(node *rp)
{
if (rp->lchild != nullptr) cut(rp->lchild);
if (rp->rchild != nullptr) cut(rp->rchild);
delete rp;
}
void build(node *rp,string in,string po)
{
char r = po[po.size()-1];
size_t ri = in.find(r),s = in.size();
rp->value = r;
if (ri != 0)
rp->lchild = new node,
build(rp->lchild,in.substr(0,ri),po.substr(0,ri));
if (ri != s-1)
rp->rchild = new node,
build(rp->rchild,in.substr(ri+1,s-ri-1),po.substr(ri,s-ri-1));
}
void out_pre(node* q)
{
cout<<q->value;
if (q->lchild != nullptr) out_pre(q->lchild);
if (q->rchild != nullptr) out_pre(q->rchild);
}
private:
node __root;
};
string in,post;
binary_tree t;
signed main()
{
cin>>in>>post;
t.build(t.root(),in,post);
t.out_pre(t.root());
return 0;
}