zoukankan      html  css  js  c++  java
  • 已知树的前序中序求后序,或者已知树的中序后序求前序(1)

    网上逛帖子,看到的东东,回忆了一下,拿着前序和中序构建不出树来,所以找些帖子学习学习,重温一下

    http://wenda.so.com/q/1368076805065680

    假设某二叉树的先序遍历序列是abdgcefh,中序遍历序列是dgbaechf,画出二叉树,并给出其后序遍历序列。

     分析:

    先序遍历序列的第一个字符为根结点

    中序遍历,根结点在中序遍历序列的中间左边部分是根结点的左子树的中序遍历序列,右边部分是根结点的右子树的中序遍历序列。

    先序:abdgcefh --> a bdg cefh

    中序:dgbaechf --> dgb a echf

    得出结论:a是树根,a有左子树和右子树,左子树有bdg结点,右子树有cefh结点。

                                                

    先序:bdg --> b dg

    中序:dgb --> dg b

    得出结论:b是左子树的根结点,b无右子树,有左子树。

                                           

    先序:dg --> d g

    中序:dg --> d g

    得出结论:d是b的左子树的根结点,d无左子树,有右子树。

                               

    先序:cefh --> c e fh

    中序:echf --> e c hf

    得出结论:c是右子树的根结点,c有左子树(只有e结点),有右子树(有fh结点)。

                                      改正:斜线上chf改为hf(截图不好改) 

    先序:fh --> f h

    中序:hf --> h f

    得出结论:f是c的左子树的根结点,f有左子树(只有h结点),无右子树。

                                         

    所以最后的图是

                             

    同理如果我们知道中序是dgbaechf, 后序是gdbehfca

    后序的最后一个(a)是根,然后根据中序  dgb  a   echf , 所以 

                                                     a

                                              dgb    echf

    通过后序的gdb 知道  b是根, 然后根据中序遍历 dg  b, 所以

                                                    b

                                               dg

    通过后序的gd知道 d是根, 然后根据中序遍历   g    d, 所以

                                                 d

                                             g

    左子树构建结束,开始构建右子树   [中序是dgbaechf, 后序是gdbehfca]

    根据后序的ehfc知道c是根,然后根据中序遍历  e   c   hf, 所以

                                                          c

                                                      e      hf

    根据后序的hf知道 f是根,然后根据中序遍历  h    f,  所以

                                                        f

                                                     h

    <已知树的前序中序求后序,或者已知树的中序后序求前序(2)>中会用程序实现.  

  • 相关阅读:
    置换python2.7.13的opcode遇到的一些坑
    不思议迷宫:逆向后的放置play
    Vmware(vmdk)虚拟机到hyperv(vhd)虚拟机转换
    MJRefresh自定义刷新动画
    UIScrollView循环滚动1
    IOS开发中如何实现自动检测更新APP
    ios极光推送快速集成教程
    IOS中程序如何进行推送消息(本地推送,远程推送)2(上)
    IOS中程序如何进行推送消息(本地推送,远程推送)2(下)
    IOS中程序如何进行推送消息(本地推送,远程推送)
  • 原文地址:https://www.cnblogs.com/silentNight/p/5476814.html
Copyright © 2011-2022 走看看