/*
不管是左右子树还是整棵树,先序遍历的第一个元素就是根节点,然后从中序遍历中找到根节点在中序遍历的位置,并且记录左子树元素的个数。
先输出左子树,再输出右子树。最后输出根节点
*/
#include<bits/stdc++.h>
using namespace std;
string pri,mid;
void print(int l1,int r1,int l2,int r2){
if(l1 > r1||l2 > r2){
return ;
}
char temp = pri[l1];
int index = l2;
while(index <= r2&&temp != mid[index]){
index++;
}
print(l1+1,l1+index-l2,l2,index-1);
print(l1+index-l2+1,r1,index+1,r2);
printf("%c",pri[l1]);
}
int main(){
// freopen("input.txt","r",stdin);
cin>>pri>>mid;
cout<<pri<<endl<<mid<<endl;
print(0,pri.size()-1,0,mid.size()-1);
return 0;
}
根据先序中序输出后序(非建树版)
最新推荐文章于 2022-03-31 17:30:28 发布