前序/中序--->后序
参考:http://www.cnblogs.com/rain-lei/p/3576796.html
!!由前序和后序序列无法确定二叉树
preOrder 5 3 2 4 8 6 9 midOrder 2 3 4 5 6 8 9 postOrder 2 4 3 6 9 8 5
#include <iostream>
using namespace std; const int maxn = ; typedef struct Node
{
int key;
struct Node *left;
struct Node *right;
}treeNode; int preOrder[maxn];
int midOrder[maxn];
// 由中序和后序序列创建树
treeNode *createTree(int preLeft, int preRight, int midLeft, int midRight)
{
if (preRight - preLeft < ) return NULL;
treeNode *root = new treeNode;
root->key = preOrder[preLeft];
if (preRight == preLeft)
{
root->left = NULL;
root->right = NULL;
} int index;
for (index = midLeft; index <= midRight; ++index)
{
if (midOrder[index] == preOrder[preLeft]) break;
}
root->left = createTree(preLeft + , preLeft + (index - midLeft), midLeft, index - );
root->right = createTree(preLeft + (index - midLeft) + , preRight, index + , midRight);
return root;
} void postOrder(treeNode *root)
{
if (root != NULL)
{
postOrder(root->left);
postOrder(root->right);
cout << root->key << " ";
}
} int main()
{
int n;
cout << "Input the number of Node: " << endl;
cin >> n;
cout << "The preOrder: " << endl;
for (int i = ; i < n; ++i)
cin >> preOrder[i];
cout << "The midOrder: " << endl;
for (int i = ; i < n; ++i)
cin >> midOrder[i];
treeNode *root = createTree(, n - , , n - );
cout << "The postOrder: " << endl;
postOrder(root);
cout << endl;
system("pause");
return ; }
前序/中序--->后序的更多相关文章
- 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序
接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...
- 前序+中序->后序 中序+后序->前序
前序+中序->后序 #include <bits/stdc++.h> using namespace std; struct node { char elem; node* l; n ...
- (原)neuq oj 1022给定二叉树的前序遍历和后序遍历确定二叉树的个数
题目描述 众所周知,遍历一棵二叉树就是按某条搜索路径巡访其中每个结点,使得每个结点均被访问一次,而且仅被访问一次.最常使用的有三种遍历的方式: 1.前序遍历:若二叉树为空,则空操作:否则先访问根结点, ...
- 二叉树 遍历 先序 中序 后序 深度 广度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- 给出 中序&后序 序列 建树;给出 先序&中序 序列 建树
已知 中序&后序 建立二叉树: SDUT 1489 Description 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历 Input 输入数据有多组,第一行是一个整数t (t& ...
- SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序 ...
- 【C&数据结构】---关于链表结构的前序插入和后序插入
刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习.连复盘得机会都 ...
- 前序 中序 后序 遍历 递归 非递归算法 java实现
前序遍历 非递归 public void preordernorec(TreeNode root){ //System.out.println("先序遍历(非递归):"); //用 ...
随机推荐
- css -- 题目汇总
1.描述下浮动和它的工作原理.模块浮动,使其脱离文档流,并且生成一个块级框.(所以父级撑不开就得到了很好的解释) 2.清除浮动的方法有那些,分别适用于什么情形.clear , 父级元素overfl ...
- Redis(7)Creating and Using Cluster Mode
1. DocumentsCluster will not support SELECT, it only contains database 0.All the nodes use TCP bus a ...
- JFrame面板
1.可见性与透明性 可见性:当面板不可见时,则该面板中包含的组件会无法显示. 透明性:若该面板是可见且透明的,那么只是面板会透明(比如面板的背景色无法看到),面板上的组件仍会显示. 注:可见性通过se ...
- Oracle知识整理
1.自带三种登录方式: Scott/tiger sys/manager system/manager 2.基本的操作 1) 建数据库 create tablespace 表空间的名称 dat ...
- Mysql安全配置【转】
相关学习资料 http://drops.wooyun.org/tips/2245 http://www.cnblogs.com/siqi/archive/2012/11/21/2780966.html ...
- Linux系统中的日常监控知识点
1.命令熟悉之w [xiongchao@oc3006745124 Desktop]$ w :: up :, users, load average: 1.48, 1.19, 1.11 USER TTY ...
- spring mvc上传图片
1.需要commons-fileupload.jar commons-io.jar 2.需要在springmvc.xml中 配置存放静态资源的路径,对图片等静态资源放行 <mvc:resourc ...
- 谈谈CSS的布局,display、position、float
前言 前端一直是我的一个很大的缺憾,这段时间痛顶思痛,决定好好的把前台的东西加强,这不,在学习了一段时间js之后,在做一些小练习,却发现最基本的一些css知识却还不了解,所以便有了这篇博文. 块级元素 ...
- 使用URL访问网络资源
URL(Uniform Resource Locator)对象代表统一资源定位器,它是指向互联网“资源”的指针.资源可以是简单的文件或目录,也可以是对更复杂的对象的引用,例如对数据库或搜索引擎的查 ...
- python 操作json
认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - Dece ...