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从中序遍历序列中划分出来的左右两部分子序列,执行上述过程,直到所有元素的在原二叉树中的位置确认。

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

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

  • 相关阅读:
    VS2015编译OpenSSL1.0.2源码
    VS2015编译CURL7.54.0源码
    Mac OS Yosemite 文件批量重命名
    https 原理
    把本地仓库导入到Github
    jquery cdn加速注意事项
    关于CSS 里的_width是什么意思???
    HTML的footer置于页面最底部的方法
    html-include
    GitHub Permission to <<repository>> denied to <<username>>
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/12583835.html
Copyright © 2011-2022 走看看