先序中序转后序
来源:互联网 发布:dnf辅助dll源码论坛 编辑:程序博客网 时间:2024/06/06 17:58
根据先序序列,再去中序划分中序为左右子树。依次递推。。
#include <iostream>#include <string>using namespace std;string pre_in_to_post(string str_pre,string str_inorder,string left,string right,string &result);int main(){string str_pre,str_in,str_post;str_pre = "123564789";str_in = "536241879";string left,right;str_post=pre_in_to_post(str_pre,str_in,left,right,str_post);cout<<str_post;return 1;}string pre_in_to_post(string str_pre,string str_inorder,string left,string right,string &result){if (str_pre.length() == 1){return str_pre;}char root = str_pre[0];int index = str_inorder.find(root);//后面的用途当做个数! left = pre_in_to_post(str_pre.substr(1,index),str_inorder.substr(0,index),left,right,result);right = pre_in_to_post(str_pre.substr( index+1,str_pre.size()-1-index),str_inorder.substr(index+1,str_inorder.size()-1-index ),left,right,result);return left+right+root;}返回值,很容易转换为引用,可在深度探索c++对象模型看到
void pre_inorder_to_post(string pre,string inorder,string &post){if (pre.length() != inorder.length()){cout<<"字符串不匹配"<<endl;exit(1);}if (pre.length() <= 1){post = pre ;return ;}int index = inorder.find(pre[0]);string post_left,post_right;pre_inorder_to_post(pre.substr(1,index),inorder.substr(0,index),post);post_left = post;pre_inorder_to_post(pre.substr(index+1,pre.length()-1-index),inorder.substr(index+1,inorder.length()-1-index),post);post_right = post;post = post_left + post_right + pre[0];}
0 0
- 先序中序转后序
- 使用esxcli命令将ESXi 5.1升级到ESXi 5.1b
- 迭代式开发技术
- Android的编译过程
- Delphi窗体中禁用最大化按钮
- week2
- 先序中序转后序
- ORA-03113错误分析
- MySQL数据表中记录不存在则插入,存在则更新/不操作
- Linux C 创建多级目录
- django练习——博客系统优化
- UVa 694 - The Collatz Sequence
- 【转】组合式,迭代式,链式MR
- Lesson_for_java_day19--java的多线程(多线程概念、单例设计模式、死锁)
- python for android : BeautifulSoup + ListView