向各位前輩求助。。。。。 小弟研究二叉樹層次遍歷三天了,始終不能結合隊列寫出可執行的代碼。。。。真心求教。。。。萬分感謝。。。。。!!!!
void Printbylevel(BTree T)
{
BNode *tmp = T;
CircleQueue *q = malloc(sizeof(CircleQueue));
Init(q);
if(T == NULL)
{
return ;//根節點為空,返回-1
}
else
{
InQueue(q, tmp);//根節點入隊
}
while(q->num)//隊列不為空
{
OutQueue(q, tmp); //出隊,把出隊元素保存在tmp上
printf("%d", tmp->data); //輸出出隊元素
if(tmp->lchild) //左子樹不為空
{
InQueue(q, tmp->lchild);//左子樹入隊
}
if(tmp->rchild) //右子樹不為空
{
InQueue(q, tmp->rchild);//右子樹入隊
}
}
return 0;
}
這個是我寫的關於層次遍歷的函數,一結合和隊列就出問題了
請問應該怎樣設計隊列結構,。。。。。。。。。。。。
如果方便的話希望能否貼出源碼參考學習
我這個程序比較簡陋,隊列用數組模擬,沒有考慮下溢的問題,不過不影響你理解大概思路,和在我之上的完善。