先序遍历的遍历规则是(中 前 后),中就是父节点,前就是左孩子,后是右孩子。既先访问当前节点,再访问左子树,最后访问右子树。这个过程是由根节点开始的一个递归的过程。以上面这个二叉树为例。他的遍历过程为:
(1)ABC
(2)A(BD)(CE)
(3)A(B(DF))(C(EGH))
2、中序遍历
中序遍历的遍历规则是(前 中 后),既访先问左子树,再访问当前节点,最后访问右子树。他的遍历过程为:
(1)BAC
(2)(DB)A(CE)
(3)((DF)B)A(C(GEH)
3、后序遍历
中序遍历的遍历规则是(前 后 中),既先访问当前节点的左子树,在访问当前节点的右子树,最后访问当前节点。他的遍历过程为:
(1)BCA
(2)(DB)(EC)A
(3)((FD)B)((GHE)C)A
算法实现为:
POSTORDER ( bitree *r)
{
if ( r = = NULL )
return ; /*空树返回*/
POSTORDER ( r->lchild ); /*先访问该节点的左子树*/
POSTORDER ( r->rchild ); /*再访问该节点右子树*/
printf ( " %c ",r->data ); /*最后访问当前节点*/
}