zoukankan      html  css  js  c++  java
  • 通过先序遍历和中序遍历后的序列还原二叉树

    Reference

    [1] 转自 http://www.cnblogs.com/caijh/p/6935645.html

    当我们有一个

    先序遍历序列:1,3,7,9,5,11

    中序遍历序列:9,7,3,1,5,11

    我们可以很轻松的用笔写出对应的二叉树。但是用代码又该如何实现?

    下面我们来简单谈谈基本思想。

    首先,先序遍历的顺序是根据 根-左孩子-右孩子 的顺序遍历的,那么我们可以率先确认的是先序遍历序列的第一个数就是根节点,然后中序遍历是根据 左孩子-根-右孩子 的顺序遍历的。我们通过先序遍历确认了根节点,那么我们只需要在中序遍历中找到根节点的位置,然后就可以很好地区分出,那些属于左子树的节点,那些是属于右子树的节点了。如下图:

    我们确定数字1为根节点,然后根据中序遍历的遍历顺序确定,中序遍历序列中数字1的左边全部为左子树节点,右边全部为右子树。通过左子树节点的个数,得出先序遍历序列中从根节点往后的连续3个数是属于左子树的,剩下的为右子树。这样再在左右子树的序列中重复以上步骤,最终找到没有子节点为止。

  • 相关阅读:
    sizeof、strlen、length、size
    extern关键字
    结构
    引用
    指针
    数组
    linux端口 ,打开服务端口
    linux用户禁用
    防止验证码的恶意发送
    springboot 项目windows下打包、注册服务。
  • 原文地址:https://www.cnblogs.com/codingforum/p/6946607.html
Copyright © 2011-2022 走看看