由中序后序得到先序的递归算法

假设中序ACGDBHZKX,后序:CDGAHXKZB

由后序序列可得到主根B,继而将中序划分为两个子树,从而也得到后序的两个子树

即acgd,hzkx,后序 cdga  ,hxkz

继续递归:

void find_first(string mid,string after){

  if (mid.size()>0){

  char ch=after[after.size()-1];

  cout<<ch;//找根输出

  int k=mid.find(ch);

  find_first(mid.substr(0,k),after.substr(0,k));

  find_first(mid.substr(k+1),after.substr(k,mid.size()-k-1));//递归左右子树;

  }

}

posted @ 2019-05-14 19:47  Night-sky  阅读(325)  评论(0编辑  收藏  举报