文章
14
粉丝
0
获赞
16
访问
914
#include<bits/stdc++.h>
using namespace std;
struct Tree{
char data;
Tree *lchild, *rchild;
};
void buildT(Tree *&T, string &zhongxv, string &houxv)
{
if(zhongxv.empty()) {T = nullptr; return;}
T = new Tree; T->lchild = nullptr; T->rchild = nullptr;
int i = houxv.size() - 1;
char c = houxv[i]; int idx = zhongxv.find(c);//在中序遍历找到(后续遍历最后节点)的位置
T->data = c; //别忘记赋值
string left_zx = zhongxv.substr(0, idx);
string right_zx = zhongxv.substr(idx + 1); //字符串切割
int ln = left_zx.size(); int rn = right_zx.size();
string left_hx = houxv.substr(0, ln);//对后续字符串切割
string right_hx = houxv.substr(ln, rn);//我企鹅企鹅企鹅
buildT(T->lchild, left_zx, left_hx); //这里是建树所以先左子树再右子树,和之前题目不一样
buildT(T->rchild, right_zx, right_hx);
}
void pp(Tree *T)
{
if(T == nullptr) return;
cout << T->data;
pp(T->lchild);
pp(T->rchild);
}
int main()
{
string zhongxv, houxv; cin >> zhongxv >> houxv;
Tr...
登录后发布评论
暂无评论,来抢沙发