二叉樹的創建
前序遍歷
中序遍歷
後序遍歷
層序遍歷
二叉樹的層序遍歷的實現還是比較簡單的,由於其層級的關係,很明顯要用到隊列來輔助實現,主要是從左向右,自上而下,依次將二叉樹的各節點入隊,這樣便可以保證輸出的順序是層序排列的。下面是算法的實現思想:
先將樹的根節點入隊,
如果隊列不空,則進入循環
{
將隊首元素出隊,並輸出它;
如果該隊首元素有左孩子,則將其左孩子入隊;
如果該隊首元素有右孩子,則將其右孩子入隊
}
C語言代碼如下:
void LevelOrderTraverse(BiTree T,Status(*Visit)(TElemType))
{
//Visit是對節點操作的應用函數,
//在這裏,對每個數據元素調用函數Visit,也即是遍歷了該節點
SqQueue q;
QElemType p;
if(T)
{
InitQueue(&q);
EnQueue(&q,T);
while(!QueueEmpty(q))
{
DeQueue(&q,&p);
Visit(p->data);
if(p->lchild!=NULL) EnQueue(&q,p->lchild);
if(p->rchild!=NULL) EnQueue(&q,p->rchild);
}
printf("/n");
}
}