zoukankan      html  css  js  c++  java
  • 二叉树的遍历(分析思路和根据两个遍历条件写出遍历图形和推出另一个遍历)

    二叉树的遍历(分析思路和根据两个遍历条件写出遍历图形):

    (D为访问根节点,L为访问左子树,R为访问右子树

    1.二叉树的前序遍历的方式为DLR( 即先访问根,然后左子树,然后右子树)

     中序遍历为LDR

     后序遍历为LRD

                                   

                       (图 1.0

    前序遍历的方式为先访问根节点A

    然后访问左子树B,D,G 

                                           

                         (图 1.1

    然后按照DLR的方式访问,访问根节点B

    然后访问左子树D,G:

                                    

                            (图 1.2

    然后按照DLR的方式访问,访问根节点D

    最后访问G节点

    之后访问A的右子树

                                  

               

                          (图 1.3

    最后前序遍历的结果为ABDGCEF

    中序遍历为: DGBAECF

    后序遍历为   GDBEFCA

                                       

                     (图 1.4

    现在反过来:知道他的两个遍历结果(其中一个必须为中序遍历:用于确定他每次递归的根节点)

    现在讲一种情况:

    前序遍历的为ABDGCEF

    中序遍历为: DGBAECF

    前序遍历的第一个肯定为根节点,所以A为根节点         (图 1.5

    遍历结果可表示为ABDG)(CEF

                                               

                     (DGBAECF

       

    根据中序遍历A的左边DGB为左子树,右边ECF为右子树

    根据前序遍历:左子树BDG的根节点为B,,再根据中序遍历知道DGB的左子树

    ABDG))(CEF

    ((DGBAECF

                                             

               

    (图 1.5

    根据中序遍历DG的根节点为D,再根据中序遍历,GD的右边

    所以左边的结构为

                                      

    (图 1.6

    右边和左边的分析方式一致

    ABDG))(CEF

    ((DGBAECF

    根据前序遍历:右子树的根节点为C

    根据中序遍历:EC的左子树,GC的右子树

    所以最终的结果如图:1.4

                                                    

    已知中序遍历和后续遍历两个条件的分析思路也是一样的,同学们可以试一试、


  • 相关阅读:
    LeetCode 264. Ugly Number II
    LeetCode 231. Power of Two
    LeetCode 263. Ugly Number
    LeetCode 136. Single Number
    LeetCode 69. Sqrt(x)
    LeetCode 66. Plus One
    LeetCode 70. Climbing Stairs
    LeetCode 628. Maximum Product of Three Numbers
    Leetcode 13. Roman to Integer
    大二暑假周进度报告03
  • 原文地址:https://www.cnblogs.com/duanxingxing/p/6550638.html
Copyright © 2011-2022 走看看