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。