资源简介
从二叉树的后序和中序序列得到二叉树的先序序列,算法采用了递归的思想,容易理解。
代码片段和文件信息
#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转换
相关资源
- 平衡二叉树的c语言实现
- Huffman编码(二叉树应用)
- 家谱管理系统 VC
- C++二叉树基于Mfc的程序开发
- C语言数据结构程序表达式求值 二叉树
- 先序后继线索二叉树
- 原创c++二叉树抽象数据类型实现
- 输出二叉树中某结点的双亲结点
- 二叉树已知后序和中序遍历求前序遍
- 二叉树实现
- 数据结构C语言课程设计平衡二叉树
- 二叉树的插入C语言
- 数据结构c语言版建立二叉树,中序非
- c++版创建并输出二叉树完整代码
- 数据结构二叉树代码
- 按层次输出二叉树
- 二叉树的前序中序后序遍历代码
- 二叉树遍历源代码(c语言)
- 平衡二叉树算法
- 二叉树 入门级
- 二叉树基本运算
- c++ 遍历二叉树(基本二叉树方法)
- C语言实现二叉树的基本操作
- 二叉树的建立和遍历
- C++学生管理系统(二叉树)
- 二叉链表作存储结构,设计求二叉树
- 判断二叉树是否为完全二叉树
- 二叉树创建C语言实现
- c语言实现二叉树的前中后序遍历 递归
- 二叉树GUI图形界面程序
评论
共有 条评论