樹的三種遍歷方式(C語言實現)


//*************************************************************************
// 【前序】遍歷算法
//二叉樹不空,先訪問根結點,然后前序遍歷左子樹,再前序遍歷右子樹
//*************************************************************************
void PreOrderTraverse(BiTree T)
{
    if(T == NULL)                /* 遞歸跳出條件*/
        return;
    printf("%c", T ->data);                            /* 對結點進行操作(可替換成其它操作)*/
    PreOrderTraverse(T ->lchild);                /* 先序遍歷左子樹*/
    PreOrderTraverse(T ->rchild);                /* 先序遍歷右字樹*/
}


//*************************************************************************
// 【中序】遍歷算法
//二叉樹不空,從根結點開始(並非是先訪問根結點),中序遍歷根節點的左子樹,
//然后訪問根結點,最后中序遍歷該根結點的右子樹
//*************************************************************************
void InOrderTraverse(BiTree T)
{
    if(T == NULL)                /* 遞歸跳出條件*/
        return;
    InOrderTraverse(T ->lchild);                /* 中序遍歷左子樹*/
    printf("%c", T ->data);                            /* 對結點進行操作(可替換成其它操作)*/
    InOrderTraverse(T ->rchild);                /* 中序遍歷右字樹*/
}


//*************************************************************************
// 【后序】遍歷算法
//二叉樹不空,從左到右先葉子后結點的方式遍歷左右子樹,最后遍歷根結點
//*************************************************************************
void PostOrderTraverse(BiTree T)
{
    if(T == NULL)                /* 遞歸跳出條件*/
        return;
    PostOrderTraverse(T ->lchild);                /* 后序遍歷左子樹*/
    PostOrderTraverse(T ->rchild);                /* 后序遍歷右字樹*/
    printf("%c", T ->data);                            /* 對結點進行操作(可替換成其它操作)*/
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM