二叉鏈表的結點類型定義如下:
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);//訪問根節點
}
}