-
先序遍历:按照根节点->左子树->右子树的顺序访问二叉树
-
中序遍历:按照左子树->根节点->右子树的顺序访问
-
后序遍历:按照左子树->右子树–>根节点的顺序访问
已知先序,中序,求后序
#include
#include using namespace std; string a,b; void work(int al,int ar,int bl,int br){ int bk;//保存中序遍历中根节点位置 for(int i=bl;i
if(b[i]==a[al]){ bk=i; break; } } int ln=bk-bl;//左子树节点个数 int rn=br-(bk+1);//右子树节点个数 if(ln>0){ work(al+1,al+1+ln,bl,bl+ln); } if(rn>0){ work(ar-rn,ar,bk+1,bk+1+rn); } cout< cin>>b>>a; int l=a.length(); work(0,l,0,l);//先序遍历查找范围[0,l),后序遍历查找范围[0,l) return 0; }已知中序,后序,求先序
#include
#include using namespace std; string a,b; void work(int al,int ar,int bl,int br){ if (al > ar || bl > br) { return; } cout< if(a[i]==b[br]){ k=i; break; } } int ln=k-al,rn=ar-k; work(al,al+ln-1,bl,bl+ln-1); work(k+1,ar,bl+ln,br-1); } int main(){ cin>>a>>b; int l=a.length()-1; work(0,l,0,l); return 0; }



