二叉树的定义是采用递归的方式,因此,遍历算法也可以采用递归。
1.前序遍历算法
代码如下:
/* 二叉树的前序遍历递归算法 */
void PreOrderTraverse(BiTree T)
{
if(T == NULL)
return;
printf("%c", T->data); //显示结点数据,可以更改为其他对结点操作
PreOrderTraverse(T->lchild); //再先序遍历左子树
PreOrderTraverse(T->rchild); //最后遍历右子树
}
2.中序遍历算法
中序遍历算法和前序遍历算法仅仅只是代码顺序上的差异。
/* 二叉树的中序遍历递归算法 */
void InOrderTraverse(BiTree T)
{
if( T==NULL)
return ;
InOrderTraverse(T->lchild); //中序遍历左子树
printf("%c",T->data); //显示结点数据,可以更改为其他对结点操作
InOrderTraverse(T->rchild); //中序遍历右子树
}
3.后序遍历算法
/* 二叉树的后序遍历算法 */
void PostOrderTraverse(BiTree T)
{
if( T==NULL)
return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c", T->data);
}