主要考察:二叉树
思路
首先,给你一个后序遍历,那最后一个就是根,由于题目求先序,所以要不断找根。那一共就有三个步骤:
Step1找到跟并输出
Step2将中序,后序各分为左右两颗子树;
Step3递归(重复Step1和Step2)
AC代码
#include<bits/stdc++.h> using namespace std; void beford(string in,string after){ if (in.size()>0){ char ch=after[after.size()-1]; cout<<ch;//找根输出 int k=in.find(ch); beford(in.substr(0,k),after.substr(0,k)); beford(in.substr(k+1),after.substr(k,in.size()-k-1));//递归左右子树; } } int main(){ string inord,aftord; cin>>inord;cin>>aftord;//读入 beford(inord,aftord);cout<<endl; return 0; }