目錄
一、二叉樹的層序遍歷
算法思想:
①初始化一個輔助隊列
②根結點入隊
③若隊列非空,則隊頭結點出隊,訪問該結點,將其左右孩子插入隊尾(如果有的話)
④重複③直至隊列爲空
二、代碼實現
//層序遍歷
void LevelOrder(BiTree T){
LinkQueue Q;
InitQueue(Q); //初始化輔助隊列
BiTree p;
EnQueue(Q,T); //將根結點入隊
while(!IsEmpty(Q)){ //隊列不空則循環
DeQueue(Q,p); //隊頭結點出隊
visit(p); //訪問出隊結點
if(p->lchild != NULL)
EnQueue(Q,p->lchild); //左孩子入隊
if(p->rchild != NULL)
EnQueue(Q,p->rchild); //右孩子入隊
}
}
//二叉樹的結點(鏈式存儲)
typedef struct BiTNode{
char data;
struct BiTNode *lchild,rchild;
}
//鏈式隊列結點
typedef struct LinkNode{
BiTNode * data; //存指針而不是結點
struct LinkNode *next;
}
typedef struct{
LinkNode *front,*rear;
}LinkQueue;