p; PreOrderTraverse(t->lchild, level + 1);
PreOrderTraverse(t->rchild, level + 1);
}
中序遍历:首先遍历左子树,然后访问根节点,最后遍历右子树(左->根->右)
顺序:中序遍历左子树->访问根节点->中序遍历右子树
/* 以递归方式 中序遍历二叉树 */
void PreOrderTraverse(BiTree t, int level)
{
if (t == NULL)
{
return ;
}
PreOrderTraverse(t->lchild, level + 1);
printf("data = %c level = %d\n ", t->data, level);
PreOrderTraverse(t->rchild, level + 1);
}
后序遍历:首先遍历左子树,然后遍历右子树,最后访问根节点(左->右->根)
顺序:后序遍历左子树->后序遍历右子树->访问根节点
/* 以递归方式 后序遍历二叉树 */
void PreOrderTraverse(BiTree t, int level)
{
if (t == NULL)
{
return ;
}
PreOrderTraverse(t->lchild, level + 1);
PreOrderTraverse(t->rchild, level + 1);
printf("data = %c level = %d\n ", t->data, level);
}
从上面可以看出,三种遍历方式极其相似,只是语句 printf("data = %c level = %d\n ", t->data, level);的位置发生了变化