#include "bits/stdc++.h"
using namespace std;
string s1,s2;
void work(int start,int end,int boot){
if (start>end) return;
int i=start;
while(i<end&&s1[i]!=s2[boot])i++;
work(start,i-1,boot+1);
work(i+1,end,boot+1+i-start);
cout<<s1[i];
}
int main(){
cin>>s1>>s2;
work(0, s1.size()-1,0);
return 0;
}
在这段代码中,s1为中序,s2为前序,boot用来找到在前序中的根节点,
因为后序是前后根所以,代码是work左work右输出当前,根据这个思路就可以完成其他变化的输出。
主要思想,利用前序找到根节点,然后再中序中找到这个根节点,这个节点前面就是左孩子,右边是右孩子。
这段代码使用C++实现了通过前序和中序遍历构建树的过程。它首先根据前序遍历找到根节点,然后在中序遍历中定位根节点,分别处理左子树和右子树,输出按照后序遍历的顺序。
3442

被折叠的 条评论
为什么被折叠?



