6.8.5 后序遍历算法

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

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

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

6.8.5 后序遍历算法 - 图1

图6-8-20

最终,后序遍历的结点的顺序就是:KHDEB-IFJGCA。同学们可以自己按照刚才的办法得出这个结果。