zoukankan      html  css  js  c++  java
  • 通过前序遍历、中序遍历、后序遍历的结果,逆推二叉树。

    二叉树遍历

    1.前序遍历(Pre-order Traversal)

    ①读取当前树根结点
    ②若存在左子树,对左子树执行①②③
    ③若存在右子树,对右子树执行①②③
    

    2.中序遍历(In-order Traversal)

    ①若存在左子树,对左子树执行①②③
    ②读取当前树根结点
    ③若存在右子树,对右子树执行①②③
    

    3.后序遍历(Post-order Traversal)

    ①若存在左子树,对左子树执行①②③
    ②若存在右子树,对右子树执行①②③
    ③读取当前树根结点。
    

    逆推重建二叉树

    前序遍历序列+中序遍历序列

    1. 获取前序遍历序列第一个元素A,该元素是二叉树根结点中保存的关键字。
    2. 凭借该元素查找中序遍历序列,A左侧的元素(GDBHEI)既是原二叉树中A所在结点左子树保存的关键字,A右侧的元素(FC)既是原二叉树中A所在结点右子树保存的关键字。
    3. 对使用A从中序遍历序列中划分出来的左右两部分子序列,执行上述过程,直到所有元素的在原二叉树中的位置确认。

    后续遍历序列+中序遍历序列

    1. 获取后序遍历序列最后一个元素A,该元素是二叉树根结点中保存的关键字。
    2. 凭借该元素查找中序遍历序列,A左侧的元素(GDBHEI)既是原二叉树中A所在结点左子树保存的关键字,A右侧的元素(FC)既是原二叉树中A所在结点右子树保存的关键字。
    3. 对使用A从中序遍历序列中划分出来的左右两部分子序列,执行上述过程,直到所有元素的在原二叉树中的位置确认。

    前序遍历序列+后序遍历序列(×)

    从前面两种逆推过程可以看出,前序遍历序列和后序遍历序列的作用主要是确定子树根结点元素,结点左右子树包含哪些元素需要借助中序遍历序列才能知道。所以,前序遍历序列+后序遍历序列无法逆推出原二叉树。

  • 相关阅读:
    实现简单高效的网址(文本)缩短服务
    Xsl模板应用基础(三、模板嵌套)
    Xsl模板应用基础(二、程序转换)
    Xsl模板应用基础(一、介绍)
    C#调用360杀毒软件查杀指定路径
    微信公众平台网页授权获取用户基本信息(VS.NET版)
    微信公众平台开发者模式自动回复功能与自定义菜单
    微信公众平台接入
    Git常用操作整理
    JVM知识点总结(一)——运行时数据区
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/12583835.html
Copyright © 2011-2022 走看看