二叉树的遍历:
二叉树的遍历是指按照某种次序对所有结点进行访问且每个结点只被访问一次的操作。
先序遍历:
若二叉树为空,则空操作返回
否则,访问根结点,再先序遍历左子树,然后先序遍历右子树
PreOrderTraverse(BiTree T)
{
if(T){
printf(T->data);
PreOrderTraverse(T->lchild);
PreOrderTraver(T->rchild);
}
}
中序遍历:
若二叉树为空,则空操作返回
否则,先中序遍历左子树,再访问根结点,然后中序遍历右子树
对于一个中序序列,根结点在序列的中间,根结点左边的序列为左子树,右边的序列为右子树
(特殊情况:只有右子树时,根结点在第一个)
InOrderTraverse(BiTree T)
{
if(T){
InOrderTraverse(T->lchild);
printf(T->data);
InOrderTraver(T->rchild);
}
}
后序遍历:
若二叉树为空,则空操作返回
否则,先后序遍历左子树,再后序遍历右子树,然后访问根结点
对于一个后序序列,根结点一定在序列的最后一个
PostOrderTraverse(BiTree T)
{
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraver(T->rchild);
printf(T->data);
}
}