1.前序遍历

前序遍历是指输出当前节点,再输出左子树,最后输出右子树。

对于上图的前序遍历顺序为:

先输出1,1的左子树2存在 -->  输出2,2的左子树4存在 --> 输出4,4的左子树不存在,右子树6存在 --> 输出6,6的左子树不存在,右子树7存在 --> 输出7,7的左子树不存在,右子树不存在。

此时我们观察到4的左右子树都已经遍历完(即2的左子树遍历完),开始访问2的右子树,2的右子树为空。

访问1的右子树,接下来的顺序依次是3 --> 5。遍历完成结束

所以前序遍历结果为:1 --> 2 --> 4 --> 6 -- >7 -->3 --> 5.


2.中序遍历

中序遍历是指先输出当前节点左子树,再输出当前节点,最后输出当前节点右子树。

对于上图的中序遍历顺序为:

1有左子树,访问2

2有左子树,访问4

4左子树为空,输出4,访问右子树6

6左子树为空,输出6,访问右子树7

7左子树为空,输出7,右子树为空

4作为2的左子树遍历完,输出2,访问2的右子树,2的右子树为空

2作为1的左子树遍历完成,输出1,访问1的右子树3

3有左子树,访问5

5左子树为空,输出5,右子树为空

5作为3的左子树遍历完成,输出5,右子树为空。

整棵树遍历结束。

中序遍历结果为:

4 --> 6 --> 7 --> 2 --> 1 --> 5 --> 3


3.后序遍历

后序遍历是指先输出当前节点左子树,再输出右子树,最后输出当前节点。

对于上图的后序遍历结果为:

1有左子树访问2

2有左子树访问4

4左子树为空,访问右子树6

6左子树为空,访问右子树7

7的左右子树都为空,输出7

6的左右子树遍历完,输出6

4的左右子树遍历完,输出4

2的左子树遍历完,右子树为空,输出2

1的左子树遍历完,访问右子树3

3有左子树访问5

5的左右子树为空输出5

3的左子树遍历完,右子树为空,输出3

1的左右子树遍历完,输出1

后序遍历顺序为:7 --> 6 --> 4 --> 2 --> 5 --> 3 --> 1


4.根据前中序结果推导出树的结构

代码实现

利用上述结果

前序遍历:1 --> 2 --> 4 --> 6 -- >7 -->3 --> 5

中序遍历:4 --> 6 --> 7 --> 2 --> 1 --> 5 --> 3

1)根据前序遍历先输出当前节点、再左子树、最后右子树顺序,我们可以知道每一个节点一定是某一棵树的根节点。例如1为整棵树的根节点。

2)根据中序遍历先输出左子树、再当前节点、再最后右子树的顺序,我们知道根节点一定是在中心位置的,根节点左边的节点一定是他的左子树,右边的节点一定是他的右子树。根据前序结果我们知道根节点为1,所以根据中序遍历结果我们可以知道根节点1的左子树节点有4、6、7、2,右子树节点有5、3。

3)对于4672这颗子树,根据前序结果,我们知道根节点为2,所以根据中序遍历结果2的左子树有467,无右子树。

4)对于467这颗子树,根据前序遍历结果,我们知道根节点为4,所以根据中序遍历结果4的左子树为空,右子树为67。

5)对67这颗子树,根据前序遍历结果,我们知道根节点为6,所以根据中序遍历结果4的左子树为空,右子树为7。

6)自此,根节点1的整个左子树遍历完成。结果如图所示:

7)对于根节点1的右子树53,根据前序遍历我们很容易推出3为下一棵子树的根节点,根据中序遍历推出5为3的左子树。

8)自此,整棵树根据前序中序结果推导完毕。


5.根据中后序结果推导出树的结构

代码实现

利用上述结果

中序遍历:4 --> 6 --> 7 --> 2 --> 1 --> 5 --> 3

后序遍历:7 --> 6 --> 4 --> 2 --> 5 --> 3 --> 1

1)根据后序遍历先输出左子树、再右子树、最后当前节点的顺序,我们知道后序遍历的根节点为最后一个节点1。

2)根据前面对中序遍历的分析,我们知道4672是根节点1的左子树,53是根节点1的右子树。

3)分析1左子树4672,根据后序遍历顺序,2为左子树的根节点;根据中序遍历顺序,确定467为2节点的左子树,2节点没有右子树。

4)分析2的左子树467,根据后续遍历顺序,4为根节点,根据中序遍历结果,67为4节点的右子树。

5)分析4的右子树67,根据后序遍历顺序,6为根节点,根据中序遍历结果,7为6节点的右子树。

6)根节点1的左子树全部推导完毕,右子树如法炮制,不再赘述。

树的前序中序后序遍历相关推荐

  1. 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...

    二叉树的先序,中序,后序遍历以及线索二叉树的遍历 (2008-05-04 17:52:49) 标签: 杂谈 C++ 二叉树的先序,中序,后序遍历以及线索二叉树的遍历 头文件 //*********** ...

  2. 树的先序/中序/后序遍历

    树的结构如下: 先序(深度搜索遍历DFS):先顶点,再左边节点,接着右边节点 前序结果:ABDEHICFG 中序:先左边节点,再顶点,最后右边节点 中序结果:DBHEIAFCG 后序:先左边节点,然后 ...

  3. 【二叉树Java】二叉树遍历前序中序后序遍历的非递归写法

    本文主要介绍二叉树前序中序后序遍历的非递归写法 在探讨如何写出二叉树的前序中序后序遍历代码之前,我们先来明确一个问题,前序中序后序遍历根据什么区分? 二叉树的前序中序后序遍历,是相较根节点说的.最先遍 ...

  4. 二叉树的前序中序后序遍历java代码实现

    1.前序遍历概述 前序遍历(VLR) 是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1 ...

  5. C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)

    C++用类实现二叉树的创建,前序中序后序遍历(附完整代码) 前序.中序.后序遍历 直接上代码 前序.中序.后序遍历 二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法.前序遍历的顺序为" ...

  6. 二叉树的前序中序后序遍历

    二叉树的前序中序后序遍历 二叉树的遍历 前序遍历 中序遍历 后序遍历 总结 二叉树的遍历 二叉树的遍历有前序遍历,中序遍历,后序遍历三种. 今天我把二叉树的遍历方法给大家总结一下,也算对我自己学习的一 ...

  7. 二叉树遍历(递归实现前序/中序/后序遍历)

    1. 准备工作 我们先定义一棵普通的二叉树,如下图 2. 前序遍历 通过递归进行遍历: 如果二叉树为空,则操作返回: 如果非空,否则从根结点开始,然后遍历左子树,再遍历右子树. 前序遍历的结果是:AB ...

  8. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

    a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...

  9. 前序中序、中序后序以及前序后序构造二叉树

    文章目录 前序中序 中序后序 前序后序 定义的树节点如下, class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { ...

  10. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

最新文章

  1. 从“小”培养AI安全意识:OpenAI开源最新强化学习训练工具,安全约束自由定制,开箱即用...
  2. HDU 1846 Brave Game
  3. NXP Pico i.MX7D上安装Android Things系统疑难杂症汇总
  4. 地铁人多不多可在线查询了 高德地图率先在北京上线新功能
  5. 软件测试:web渗透测试怎样入门!讲透了...
  6. 《算法图解》第二章笔记与课后练习_选择排序算法
  7. 链表的中间节点--快慢指针
  8. html5元素用于组合标题元素,HTML5知识初级题目
  9. 汇编语言程序设计---期末复习大纲知识点总结(王爽第二版)
  10. Java面试中如何介绍自己的项目经验?
  11. 如何在微信小程序中使用echarts绘制地图(微信小程序制作疫情数据地图)
  12. 【清华大学】《逻辑学概论》笔记
  13. 12.3.4 UDP网络调试助手实例
  14. R 单样本wilcoxon test
  15. webERP开源系统安装配置
  16. 逻辑漏洞渗透与攻防(六)之其他类型逻辑漏洞
  17. 蚂蚁金服的to B开放
  18. 计算机软件技术基础图片,计算机软件技术基础.ppt
  19. 生活用纸抗张强度预测Baseline
  20. ASP程序中常用的脚本语言

热门文章

  1. anaconda创建python环境
  2. 新计算机设置,请问新电脑怎样设置BIOS????
  3. json与formdata格式相互转换
  4. 写给想学和在学编程的你们,学习编程的7个好处
  5. halcon模板匹配
  6. [转]亿级Web系统搭建——单机到分布式集群
  7. BUUCTF-HAVE FUN
  8. kaggle aptos2019 的图像预处理
  9. 微信小程序点播插件_小程序直播插件接入 - 微信小程序
  10. 百格活动荣誉出品《2019年满分男友测试卷》,请接好!