zoukankan      html  css  js  c++  java
  • POJ 2255/递归:前序中序求后序

    Sample Input
    DBACEGF ABCDEFG

    已知二叉树的前序遍历与后序遍历求后序遍历

    算法:前序遍历时,第一位为根:D;找到中序中的D,则前面的ABC在左子树,右边的EFG在右子树,则后序为为左子树+右子树+根:solve(BAC,ABC)+solve(EGF,EFG)+D

    #include <iostream>
    #include <string>
    using namespace std;
    string solve(string pre,string mid){
    	if(pre.length()==1)return pre;
    	else if(pre.length()==0)return "";
    	int m = mid.find(pre[0]);
    	
    	return solve(pre.substr(1,m),mid.substr(0,m))+solve(pre.substr(m+1),mid.substr(m+1))+pre[0];
    }
    int main(int argc, char* argv[])
    {
    	
    	string pre,mid;
    	while(cin>>pre>>mid){
    		
    		cout<<solve(pre,mid)<<endl;
    	}
    	return 0;
    }

    躲猫猫社团团长 http://t.sina.com.cn/coolria

  • 相关阅读:
    Nginx
    Nginx & AWStats 安装、配置、使用
    Nginx
    linux
    工作中的 Vim 和 git
    后端
    django
    django
    awk流程控制
    linux系统内置函数
  • 原文地址:https://www.cnblogs.com/yangyh/p/2073290.html
Copyright © 2011-2022 走看看