根据先序遍历和中序遍历得出二叉树。最终以后序遍历的形式输出。
来源:互联网 发布:网络大电影2017排行榜 编辑:程序博客网 时间:2024/06/05 19:25
以最简单基本地实现了根据二叉树先序遍历中序遍历建树最后以后序遍历的方式输出。供理解。有不当的地方也在持续更改中
#include<iostream>
using namespace std;struct BinaryTreeNode
{
int value;
BinaryTreeNode* left;
BinaryTreeNode* right;
};
//int beforeSequence[8] = {1, 2, 4, 7, 3, 5, 6, 8};
//int midSequence[8] = {4, 7, 2, 1, 5, 3, 8, 6};
int beforeSequence[8] = {1, 2, 3, 4, 5, 6, 7, 8};
int midSequence[8] = {8, 4, 2, 5, 1, 6, 3, 7};
int nodeSize = 8;
int findFirstIndex(int starting, int ending)//每次都以中序遍历的序列串为依据,找出该串中第一个在先序遍历情况下出现的,返回该数在中序遍历中的下标
{
int i, j;
for (i = 0; i < nodeSize; i++)
{
for (j = starting; j <= ending; j++)
{
if (beforeSequence[i] == midSequence[j])
return j;
}
}
return -1;
}
BinaryTreeNode* createBinaryTree(int starting, int ending)
{
if (starting > ending)
return NULL;
else
{
BinaryTreeNode* bi = new BinaryTreeNode;
int index = findFirstIndex(starting, ending);
if (index == -1)
{
cout<<"error";
return NULL;
}
bi->value = midSequence[index]; //先序遍历下首次出现的则是二叉树的根节点
bi->left = createBinaryTree(starting, index - 1); //递归调用方法实现
bi->right = createBinaryTree(index + 1, ending);
return bi;
}
}
void printAfter(BinaryTreeNode* t)//结果以后序遍历的形式输出,简单验证没问题。仅供学习交流
{
if (t == NULL)
{
return;
}
else
{
printAfter(t->left);
printAfter(t->right);
cout<< t->value;
}
}
int main()
{
BinaryTreeNode* node = createBinaryTree(0, 7);
printAfter(node);
return 0;
}
0 0
- 根据先序遍历和中序遍历得出二叉树。最终以后序遍历的形式输出。
- 二叉树先序遍历中序遍历结果得出该树,并以后序遍历形式输出
- 小白书之根据二叉树的先序遍历和中序遍历得出后序遍历
- 根据中序遍历和后序遍历求二叉树的先序遍历
- 【二叉树】 根据先序和中序遍历输出后序遍历
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 根据二叉树的先序遍历和中序遍历建立二叉树
- 根据二叉树的先序遍历和中序遍历重构二叉树
- 数组实现根据二叉树的先序遍历和中序遍历构造二叉树
- 根据二叉树的先序遍历和中序遍历重建二叉树
- 根据后续和中序遍历输出先序遍历
- 根据中序遍历和先序遍历,后序遍历创建二叉树。
- 根据二叉树的先序和中序遍历求出其后序遍历
- 根据先序遍历和中序遍历重建二叉树的两种方法
- 二叉树问题-根据前序遍历结果和中序遍历结果得出后序遍历结果
- 根据先序和中序遍历重建二叉树
- poj2255 根据任意二叉树的先序遍历和中序遍历求解后序遍历
- 给定二叉树的先序遍历和中序遍历,输出它的后序遍历序列
- ConcurrentLinkedQueue、AraayBlockingQueue、LinkedBlockingQueue 区别及使用场景
- HDU 5514 Game of Flying Circus
- SSDsim源码分析之 load_parameters
- 百度运用 FPGA 方法大规模加速 SQL 查询
- Linux进程通信
- 根据先序遍历和中序遍历得出二叉树。最终以后序遍历的形式输出。
- 60. Permutation Sequence
- QT Creator编译出现"常量中有换行符"解决.
- 为 Github 创造 Integration
- 树状数组
- Tyvj P1933 「Poetize3」绿豆蛙的归宿
- CSS中冻结布局
- Hive 2 安装
- 阿里巴巴的开源产品