二叉樹前中後遞歸算法

二叉鏈表的結點類型定義如下:

typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild,*rchild;//左右孩子指針 
}BiTNode,*BiTree;

前序遍歷(DLR):若二叉樹爲空,則空操作;否則:1、訪問根節點 2、先序遍歷根節點的左子樹 3、先序遍歷根節點的右子樹

//先序遍歷二叉樹的遞歸算法 ,Visit()是對數據操作的應用函數 
void PreOrderTraverse(BiTNode * T)
{//
    if (T)
    {
        Visit(T->data);//訪問根節點 
        PreOrderTraverse(T->lchild);// 先序遍歷左子樹 
        PreOrderTraverse(T->rchild);//先序遍歷右子樹 

    }
}

中序遍歷(LDR):若二叉樹爲空,則空操作;否則:1、中序遍歷根節點的左子樹 2、訪問根節點3、中序遍歷根節點的右子樹

//中序遍歷二叉樹的遞歸算法 ,Visit()是對數據操作的應用函數 
void InOrderTraverse(BiTNode * T)
{//
    if (T)
    {
        InOrderTraverse(T->lchild);// 先序遍歷左子樹 
        Visit(T->data);//訪問根節點 
        InOrderTraverse(T->rchild);//先序遍歷右子樹 

    }
}

後序遍歷(LRD):若二叉樹爲空,則空操作;否則:1、後序遍歷根節點的左子樹 2、後序遍歷根節點的右子樹 3、訪問根節點

//後序遍歷二叉樹的遞歸算法 ,Visit()是對數據操作的應用函數 
void PostOrderTraverse(BiTNode * T)
{//
    if (T)
    {
        PostOrderTraverse(T->lchild);// 先序遍歷左子樹 
        PostOrderTraverse(T->rchild);//先序遍歷右子樹 
        Visit(T->data);//訪問根節點 
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章