zoukankan      html  css  js  c++  java
  • 根据前序和中序推出后序

    最近面试总遇到这种根据给出的两类序遍历,然后求按另一种形式序的遍历。看来有必要好好总结下这个知识点,省的每次笔试时都得花不少时间推导。

    首先,我们看看前序、中序、后序遍历的特性: 
    前序遍历:(根—>左—>右)
        1.访问根节点 
        2.前序遍历左子树 
        3.前序遍历右子树 
    中序遍历:(左—>根—>
        1.中序遍历左子树 
        2.访问根节点 
        3.中序遍历右子树 
    后序遍历:(左—>右—>
        1.后序遍历左子树 
        2.后序遍历右子树 
        3.访问根节点

    三序中知道其中两个就可以推出第三个,但前提是我们必须知道中序(这里是针对二叉树的,不包括二叉搜索树).因为:先序和后序给我们提供的信息是一样的--告诉我们谁是根节点,中序则告诉我们左右子树在哪儿。

    例:已知先序为eacbdgf,中序为abcdefg,求后序。

    由先序我们知道e为根节点,我们在中序中把左右子树括起来 --(abcd)e(fg)

    同样对左子树abcd进行分析,先序为acbd,中序为abcd.--a(bcd)

    递归下去就可以了

    后序为bdcafge

     

    扩展:

    在2014年阿里实习生招聘试题中就有一个问题:

    下面关于二叉搜索树的是否正确?

    给定一棵二叉搜索树的前序和后序遍历结果,无法确定这棵二叉搜索树。

    这个说法是错误的。

    二叉树(不是搜索二叉树),必须是中根加上先根或者后根就能构造出树,但是,这里面说了是二叉搜索树,已经暗含中根了

  • 相关阅读:
    elasticsearch 插件 大全
    ElasticSearch 服务搭建
    限制玻尔兹曼机(Restricted Boltzmann Machine)RBM
    卷积神经网络
    [转]MATLAB cell数据类型
    [转]matlab语言中的assert断言函数
    [转]matlab中squeeze函数的用法,numel的用法
    Sparse autoencoder implementation 稀疏自编码器实现
    MATLAB中的randi函数
    可视化自编码器训练结果&稀疏自编码器符号一览表
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3366417.html
Copyright © 2011-2022 走看看