那么同样的,后序遍历也就很容易想到应该如何写代码了。
/* 二叉树的后序遍历递归算法 */
void PostOrderTraverse(BiTree T){
if (T == NULL)
return;
/* 先后序遍历左子树 */
PostOrderTraverse(T->lchild);
/* 再后序遍历右子树 */
PostOrderTraverse(T->rchild);
/* 显示结点数据,可以更改为其他对结点操作 */
printf("%c", T->data);
}
如图6-8-20所示,后序遍历是先递归左子树,由根结点A→B→D→H,结点H无左孩子,再查看结点H的右孩子K,因为结点K无左右孩子,所以打印K,返回。
最终,后序遍历的结点的顺序就是:KHDEB-IFJGCA。