资源简介
从二叉树的后序和中序序列得到二叉树的先序序列,算法采用了递归的思想,容易理解。
代码片段和文件信息
#include
#include
using namespace std;
void FLAMTF(int m1 int m2 int l1 int l2 string mT string lT){
if(m2 - m1 <= 0){
if(m2 - m1 == 0)
cout << lT.at(l2);//当仅有一个元素时输出
return;//当m2 - m1 < 0时,说明没有右/左子树,不输出,返回
}
int m = 0;
for(int i = 0; i < mT.size(); i++){
if(mT.at(i) == lT.at(l2)){
m = i;
break;
}
}
if(m >= mT.size()){
cout << “输入的序列不能构成二叉树“ << endl;
exit(0);
}//两个序列中含有不同的元素,肯定不能构成二叉树
if(m2 - m1 > 0){
cout << lT.at(l2);
FLAMTF(m1 m - 1 l1 l1 + m - m1 - 1 mT lT);
FLAMTF(m + 1 m2 l1 + m - m1 l1 + m2 - m1 - 1 mT lT);
}//这个式子一定要仔细推出
}//从后序和中序的到先序
void FFAMTL(int f1 int f2 int m1 int m2 string fT string mT){
if(m2 - m1 <= 0){
if(m2 - m1 == 0)
cout << fT.at(f1);//当仅有一个时就输出
return;
}
int m = 0;
for(int i = 0; i < mT.size(); i++){
if(mT.at(i) == fT.at(f1)){
m = i;
break;
}
}
if(m >= mT.size()){
cout << “输入的序列不能构成二叉树“ << endl;
exit(0);
}//两个序列中含有不同的元素,肯定不能构成二叉树
if(m2 - m1 > 0){
FFAMTL(f1 + 1 f1 + m - m1 m1 m - 1 fT mT);
FFAMTL(f1 + m - m1+ 1 f2 m + 1
- 上一篇:A星算法简单直观
- 下一篇:c++实现NFA与DFA转换
相关资源
- 二叉树排序树建立及平衡处理
- 使用平衡二叉树管理的学生管理系统
- 家族成员信息管理系统
- 二叉树 VC6.0 MFC实现 数据结构
- 二叉树的建立以及遍历
- MFC二叉树遍历的可视化
- 二叉树的生成与遍历mfc
- 二叉树的前序中序后序遍历MFC
- MFC/VC二叉树的建立和显示画图形式显
- 二叉树的遍历及应用.ppt
- 用二叉树做的心理测试mfc
- 二叉树和森林之间的转换
- c++ mfc 单词及其释义的录入和读取,查
- 利用二叉树结构实现赫夫曼编/解码器
- 数据结构实验报告-实现二叉树的基本
- C语言判定一棵二叉树是否为二叉搜索
- 二叉树C语言以及构建表达式树
- c语言遍历二叉树
- C++前中后缀表达式转表达式二叉树
- mfc二叉树的实现,涉及到增加节点等
- 二叉树非递归遍历源码
- 数据结构遍历二叉树算法C语言版(附
- C语言源代码学生成绩管理系统、图书
- C++ 二叉树 动物猜想游戏
- 学生成绩管理系统含二叉树内容
- 《数据结构》C语言版 实验报告 基础
- 二叉树c++源代码实现查找,删除,插
- 构建二叉树、输出二叉树、求树深、
- 孩子兄弟链表法表示二叉树C++
- 二叉树成绩管理系统
评论
共有 条评论