那么同样的,后序遍历也就很容易想到应该如何写代码了。

    1. /* 二叉树的后序遍历递归算法 */
    2. void PostOrderTraverse(BiTree T){
    3. if (T == NULL)
    4. return;
    5. /* 先后序遍历左子树 */
    6. PostOrderTraverse(T->lchild);
    7. /* 再后序遍历右子树 */
    8. PostOrderTraverse(T->rchild);
    9. /* 显示结点数据,可以更改为其他对结点操作 */
    10. printf("%c", T->data);
    11. }

    如图6-8-20所示,后序遍历是先递归左子树,由根结点A→B→D→H,结点H无左孩子,再查看结点H的右孩子K,因为结点K无左右孩子,所以打印K,返回。
    image.png
    最终,后序遍历的结点的顺序就是:KHDEB-IFJGCA。