前序遍历:

前序遍历(VLR)是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。
若二叉树为空则结束返回,否则:
(1)访问根结点。
(2)前序遍历左子树。
(3)前序遍历右子树 。
需要注意的是:遍历左右子树时仍然采用前序遍历方法。
已知后序遍历和中序遍历,就能确定前序遍历。


中序遍历:

中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游。在二叉树中,中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。
若二叉树为空则结束返回,否则:
(1)中序遍历左子树
(2)访问根结点
(3)中序遍历右子树
已知前序遍历和后序遍历,无法推导出二叉树,所以无法确定中序遍历。


后序遍历:

后序遍历(LRD)首先遍历左子树,然后遍历右子树,最后访问根结点,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后遍历根结点。
若二叉树为空则结束返回,否则:
(1)后序遍历左子树
(2)后序遍历右子树
(3)访问根结点
已知前序遍历和中序遍历,就能确定后序遍历。


根据前序遍历中序遍历推导树的结构:

已知:
前序遍历: GDAFEMHZ
中序遍历: ADEFGHMZ
求后序遍历

1.根据后序遍历的特点(左右中),根节点在结尾,确定G是根节点。根据中序遍历的特点(左中右),确定ADEF组成左子树,HMZ组成右子树。

2.分析左子树。ADEF这四个元素在后序遍历(左右中)中的顺序是AEFD,在中序遍历(左中右)中的顺序是ADEF。根据后序遍历(左右中)的特点确定D是左子树的节点,根据中序遍历(左中右)的特点发现A在D前面,所以A是左子树的左叶子,EF则是左子树的右分枝。
EF在后序(左右中)和中序(左中右)的相对位置是一样的,所以EF关系是左右或者左中,排除左右关系(缺乏节点),所以EF关系是左中,
到此得出左子树的形状。

3.分析右子树。HMZ这三个元素在中序遍历(左中右)的顺序是HMZ,在后序遍历(左右中)的顺序是HZM。根据后序遍历(左右中)的特点,M在尾部,即M是右子树的节点。再根据中序遍历(左中右)的特点,确定H(M的前面)是右子树的左叶子,Z(M的后面)是右子树的右叶子。

4.最后得出树的形状

最后还可以得出这个二叉树的后序遍历为AEFDHZMG。

二叉树已知前序遍历、中序遍历画出二叉树的形状相关推荐

  1. [算法] 已知前序和中序遍历,建立二叉树

    结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和中序遍历顺序,建立二叉树 问题 ...

  2. [算法] 已知前序和后序遍历,建立二叉树

    结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和后序遍历,建立二叉树(不唯一, ...

  3. 二叉树中已知前序和中序求其后序(图解加技巧让你轻松掌握)

    一          首先咱得了解二叉树的结构,和前序/中序/后序遍历分别是什么. 1:什么是根和左右孩子:二叉树的每个节点都可以作为根,每个根下面的叫左右孩子,也可以没有孩子 ​ 实际使用中会如下图 ...

  4. 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树

    两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...

  5. leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

    目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...

  6. 剑指offer 07重建二叉树(根据前序、中序遍历)草真tm难

    /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode ...

  7. 二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树

    题目链接: 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)​leetcode-cn.com 题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树,可以假设树中没有重复的元素. 示例: 前 ...

  8. 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)

    1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...

  9. Java——从前序与中序遍历序列构造二叉树

    文章目录 前言 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 1.构造二叉树 2.层次遍历二叉树 三.总结 前言 算法分析--分治法 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 ...

最新文章

  1. MATLAB——scatter的简单应用
  2. [USACO07JAN]Protecting the Flowers S
  3. 如何计算机械能,问:损失的机械能如何计算?
  4. myeclipse怎么集成Tomcat
  5. CodeForces - 594A Warrior and Archer(思维+博弈)
  6. LeetCode 1796. 字符串中第二大的数字
  7. vba显示正在加载_简单、易用的VBA过程积木代码
  8. 【今日CS 视觉论文速览】 24 Dec 2018
  9. JQuery UI AutoComplete 与 Strtus2 结合使用
  10. [C#]自定义鼠标样式
  11. 95-235-050-源码-task-Flink task之间的数据交换
  12. Java实现MongoDB的日期(Date)分组功能
  13. React全家桶构建一款Web音乐App实战(五):歌曲状态管理及播放功能实现
  14. Zookeeper全解析——Client端(转)
  15. IDEA jsp页面代码没有高亮
  16. “我爱淘”冲刺阶段Scrum站立会议9
  17. “竞速”智能网联汽车,领头雁为何是长沙?
  18. 十大网页设计者必看的网站
  19. NYOJ283对称排序
  20. 谷歌浏览器上传文件时候出现卡死现象

热门文章

  1. 全志A10/A20 nand flash系统开发
  2. 计算机的一些小操作,电脑操作实用小技巧(适用小白)
  3. dos2unix install on mac_好用到叫出声!强烈推荐 10 款 Mac 软件!
  4. 华为Mate book D 2018加装内存条
  5. win7怎么进网络连接服务器未响应,win7 怎么远程连接服务器未响应
  6. (sdau) Summary of the fourth week.
  7. 【CF1616H】Keep XOR Low(字典树)
  8. SpringBoot整合Redis配置MyBatis二级缓存
  9. C# 上位机倒数计时器
  10. 时间机器 Time Machine 三星T7 移动硬盘SSD解决方案