算法1:遍歷二叉樹的遞歸算法

--------------------------------------------------先序遍歷二叉樹--------------------------------------------------

Status PreOrderTraverse( Bitree T, Status ( * Visit )( TElemType e ) ) {

 

//  Status PrintElement( TElemType e ) {

//    printf( e );

//    return OK;

//  }

 

  if ( T ) {

    if ( Visit( T -> data ) )

      if ( PreOrderTraverse( T -> lchild, Visit ) )

        if ( PreOrderTraverse( T -> rchild, Visit ) )  return OK;

    return ERROR;

  }

  else  return OK;

 

}

 

--------------------------------------------------中序遍歷二叉樹--------------------------------------------------

Status InOrderTraverse( Bitree T, Status ( * Visit )( TElemType e ) ) {

 

//  Status PrintElement( TElemType e ) {

//    printf( e );

//    return OK;

//  }

 

  if ( T ) {

    if ( InOrderTraverse( T -> lchild, Visit)

      if ( Visit( T -> data ) )

        if ( InOrderTraverse( T -> rchild, Visit ) )  return OK;

    return ERROR;

  }

  else  return OK;

 

}

 

--------------------------------------------------後序遍歷二叉樹--------------------------------------------------

Status PostOrderTraverse( Bitree T, Status ( * Visit )( TElemType e ) ) {

 

//  Status PrintElement( TElemType e ) {

//    printf( e );

//    return OK;

//  }

 

  if ( T ) {

    if ( PostOrderTraverse( T -> lchild, Visit )

      if ( PostOrderTraverse( T -> rchild, Visit )

        if ( Visit( T -> data ) )  return OK;

    return ERROR;

  }

  else  return OK;

 

}

 

 

END

 

發佈了13 篇原創文章 · 獲贊 17 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章