前序遍历的规则:(1)访问根节点 (2)前序遍历左子树(3)前序遍历右子树
中序遍历的规则:(1)中序遍历左子树 (2)访问根节点 (3)中序遍历右子树
后序遍历二叉树的规则: (1)后序遍历左子树 (2)后序遍历右子树 (3)访问根节点
算法分析:我们可以将其分左跟右两部分,先从后序中找出根节点,再分成左跟右两部分(最好四个变量,分别为各自起始点)(根据数量做)(全局变量会变,最好用单局),然后递归
注意:单局变量和全局变量需谨慎,如果在函数中某个变量不希望他变,在函数中定义,若想变或无所谓,则全局
#include<bits/stdc++.h>
using namespace std;
char a[1000],b[1000];
int i,j,ss,zc,zcc;
void as(int l,int r,int ll,int rr){
cout<<b[rr];
if(r<=l||rr<=ll) {
return;
}
int n=l;
while(a[n]!=b[rr]&&n<=r){
n++;
}
if(n>r) return;
int zb=n-l;
int yb=r-n;
if(zb>0) {
as(l,n-1,ll,ll+zb-1);
}
if(yb>0) {
as(n+1,r,ll+zb,rr-1);
}
}
int main(){
scanf("%s",a);
ss=strlen(a);
scanf("%s",b);
as(0,ss-1,0,ss-1);
}