遍历二叉树(前序、中序、后序、层序)

来源:互联网 发布:java发送内嵌图片邮件 编辑:程序博客网 时间:2024/06/05 23:56

1、前序遍历

若二叉树为空,则返回空,否则先访问根节点,然后访问左子树,然后是右子树(根->左->右),如图所示,遍历顺序为:ABDGHCEIF。

/*二叉树的前序遍历递归算法*/

void PreOrderTraverse(BiTree T){

      if(T==NULL)

            return;

       printf("%c",T->data);

       PreOrderTraverse(T->lchild);/*先遍历左子树*/

       PreOrderTraverse(T->fchild);/*最后遍历右子树*/

}

1、中序遍历

若二叉树为空,则返回空,否则先访问左子树,然后访问根节点,然后是右子树(左->根->右),如图所示,遍历顺序为:GDHBAEICF。

void InOrderTraverse(BiTree T){

      if(T==NULL)

            return;

       InOrderTraverse(T->lchild);/*先遍历左子树*/

       printf("%c",T->data);

       InOrderTraverse(T->fchild);/*最后遍历右子树*/

}

 

1、后序遍历

若二叉树为空,则返回空,否则先访问左子树,然后访问右子树,然后是根节点(左->右->根),如图所示,遍历顺序为:GHDBIEFCA。

void PostOrderTraverse(BiTree T){

      if(T==NULL)

            return;

       PostOrderTraverse(T->lchild);/*先遍历左子树*/

       PostOrderTraverse(T->fchild);/*再遍历右子树*/

       printf("%c",T->data);

}

 

1、层序遍历

若二叉树为空,则返回空,否则先访问根节点,然后从上而下逐层遍历,在同一层中,从左到右对结点逐个访问,如图所示,遍历顺序为:ABCDEFGHI。