zoukankan      html  css  js  c++  java
  • 数据结构:二叉树遍历及其递归实现

    先序遍历

    遍历过程为:

    • ①访问根结点;
    • ②先序遍历其左子树;
    • ③先序遍历其右子树。
    • A(B D F E )(C G H I)
    • 先序遍历=> A B D F E C G H I
    void PreOrderTraversal( BinTree BT )
    {
    if( BT ) {
    printf(“%d”, BT->Data);
    PreOrderTraversal( BT->Left );
    PreOrderTraversal( BT->Right );
    }
    }
    

    中序遍历

    • ①中序遍历其左子树;
    • ②访问根结点;
    • ③中序遍历其右子树。
    • (D B E F) A (G H C I)
    • 中序遍历=> D B E F A G H C I
    void InOrderTraversal( BinTree BT )
    {
    if( BT ) {
    InOrderTraversal( BT->Left );
    printf(“%d”, BT->Data);
    InOrderTraversal( BT->Right );
    }
    }
    

    后序遍历

    • ①后序遍历其左子树;
    • ②后序遍历其右子树;
    • ③访问根结点。
    • (D E F B )( H G I C) A
    • 后序遍历=> D E F B H G I C A
    void PostOrderTraversal( BinTree BT )
    {
    if( BT ) {
    PostOrderTraversal( BT->Left );
    PostOrderTraversal( BT->Right);
    printf(“%d”, BT->Data);
    }
    }
    

    三种遍历

    • 前后中按照访问根节点的先后顺序来确定。
    • 递归实现,前中后序遍历对应输出的前中后三个位置。
    • 先序、中序和后序遍历过程:遍历过程中经过结点的路线一样,只是访问各结点的时机不同。
    • 图中在从入口到出口的曲线上用三种符号分别标记出了先序、中序和后序访问各结点的时刻。
  • 相关阅读:
    握手挥手状态(转)
    牛客笔记
    Redis常见面试题
    SpringBoot整合Redis及Redis工具类撰写(转)
    Netty中FastThreadLocal源码分析(转)
    计算机网络各层涉及协议(转)
    计算机小网络小笔记
    数据库
    操作系统提供的接口
    可重入锁和不可重入锁
  • 原文地址:https://www.cnblogs.com/vancasola/p/7842666.html
Copyright © 2011-2022 走看看