引言:
    (1)基于二叉树的链式存储结构讨论二叉树的如下主要操作:
    先序遍历操作
    中序遍历操作
    后序遍历操作
    (2)关于如何构建二叉树的问题,将在本部分的相关实验教学中,讨论完全二叉树的构建方法。
    (3)重点知识:
    先序遍历操作(递归算法)
    中序遍历操作(递归算法)
    后序遍历操作(递归算法)
    中序遍历的非递归算法(利用堆栈)
    层次遍历算法(非递归、利用队列)
    (4)难点:
    理解递归遍历算法
    利用堆栈实现中序遍历的非递归算法
    利用队列实现层次遍历的非递归算法

    1. 先序遍历
    对先序遍历、中序遍历及后序遍历的基本理解
    各种次序的遍历方法都是以二叉树的根节点作为参照来定义的。
    所谓先序遍历就是先遍历二叉树的根节点 ;
    所谓中序遍历就是在中间遍历根节点;
    所谓后序遍历就是在最后遍历根节点。

    (1)先序遍历的基本方法
    遍历二叉树 - 图1
    (2)先序遍历的过程分析
    遍历二叉树 - 图2
    上述二叉树的先序遍历过程讲解:
    (1)找到整个二叉树的根结点,遍历根结点(访问根节点)。
    (2)先序遍历根节点的左子树(递归);所谓递归,就是将该左子树看成一个独立的二叉树,对其进行
    先序遍历。
    (3)先序遍历根节点的右子树(递归);所谓递归,就是将该右子树看成一个独立的二叉树,对其进行
    先序遍历。
    直到二叉树的所有结点都被遍历,形成先序遍历序列。

    1. 对如上图所示二叉树的遍历过程:<br /> 1)遍历整个二叉树的根结点,得到结点: A<br /> 2)先序遍历根节点A的左子树,得到结点序列:BDGEH<br /> 3)先序遍历根结点A的右子树,得到结点序列:CF<br /> 所以,最后得到整个二叉树的先序遍历序列: A BDGEH CF<br /> (根结点) A的左子树序列) A的右子树序列)<br />**(3)先序遍历算法实现**<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/1018905/1594736709021-a3028d81-6ba5-4dbb-93ed-680854fbc59f.png#align=left&display=inline&height=250&margin=%5Bobject%20Object%5D&originHeight=447&originWidth=1001&size=0&status=done&style=none&width=560)

    2. 中序遍历
    (1)中序遍历的基本方法
    遍历二叉树 - 图3
    (2)中序遍历的过程分析
    遍历二叉树 - 图4
    上述二叉树的中序遍历过程讲解:
    (1)中序遍历根节点的左子树(递归);
    (2)遍历根结点(访问根节点);
    (3)中序遍历根节点的右子树(递归);
    直到二叉树的所有结点都被遍历,形成先序遍历序列。

        对如上图所示二叉树的遍历过程:<br />        (1)中序遍历二叉树根结点的左子树,得到结点序列:DGBHE<br />        (2)遍历根结点,得到结点 A<br />        (3)中序遍历根结点的右子树,得到结点序列:CF<br />        所以,最后得到整个二叉树的先序遍历序列:     DGBHE                    A                         CF<br />                                                                        (A的左子树序列)   (根结点A)      (A的右子树序列)<br />**(3)中序遍历算法实现**<br />    ![](https://cdn.nlark.com/yuque/0/2020/png/1018905/1594736709144-729a3642-cd91-4c71-996a-2eca0597427b.png#align=left&display=inline&height=225&margin=%5Bobject%20Object%5D&originHeight=399&originWidth=1027&size=0&status=done&style=none&width=580)<br />**3. 后序遍历**<br />**(1)后序遍历的基本方法**<br />       ![](https://cdn.nlark.com/yuque/0/2020/png/1018905/1594736709029-a0d46eb1-0f92-48b3-b275-b17c289e9323.png#align=left&display=inline&height=59&margin=%5Bobject%20Object%5D&originHeight=113&originWidth=1107&size=0&status=done&style=none&width=580)<br />**(2)后序遍历的过程分析**<br />               ![](https://cdn.nlark.com/yuque/0/2020/png/1018905/1594736709021-dd513e10-ca83-4d5e-964e-dd4c47df8d52.png#align=left&display=inline&height=236&margin=%5Bobject%20Object%5D&originHeight=405&originWidth=997&size=0&status=done&style=none&width=580)<br />        上述二叉树的后序遍历过程讲解:<br />        (1)后序遍历根节点的左子树(递归);<br />        (2)后序遍历根节点的右子树(递归);<br />        (3)遍历根结点(访问根节点);<br />         直到二叉树的所有结点都被遍历,形成先序遍历序列。
    
        对如上图所示二叉树的遍历过程:<br />        (1)后序遍历二叉树根结点的左子树,得到结点序列:GDHEB<br />        (2)后序遍历根结点的右子树,得到结点序列:FC<br />        (3)遍历根结点,得到结点 A<br />        所以,最后得到整个二叉树的先序遍历序列:     GDHEB                           FC                         A<br />                                                                        (A的左子树序列)      (A的右子树序列)    (根结点A) <br />**(3)后序遍历算法实现**<br />         ![](https://cdn.nlark.com/yuque/0/2020/png/1018905/1594736709064-23f9caa0-b5e6-4edb-a813-e7e25ae97712.png#align=left&display=inline&height=225&margin=%5Bobject%20Object%5D&originHeight=399&originWidth=1027&size=0&status=done&style=none&width=580)