日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

二叉树的层序遍历 使用队列和不使用队列

發(fā)布時間:2025/3/21 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树的层序遍历 使用队列和不使用队列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、使用隊列

先將樹的根節(jié)點入隊,
如果隊列不空,則進入循環(huán)
{
將隊首元素出隊,并輸出它;
如果該隊首元素有左孩子,則將其左孩子入隊;
如果該隊首元素有右孩子,則將其右孩子入隊
}

C語言代碼:void LevelOrderTraverse(BiTree T,Status(*Visit)(TElemType)) { //Visit是對節(jié)點操作的應(yīng)用函數(shù), //在這里,對每個數(shù)據(jù)元素調(diào)用函數(shù)Visit,也即是遍歷了該節(jié)點 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"); } }

2、不使用隊列
C語言代碼:

void LevelorderTraversal(BinTree BT) {if(BT){BinTree b[100];b[0] = BT;int first = 0;int rear = 1;while(first < rear){printf(" %c",b[first]->Data);if(b[first]->Left){b[rear++] = b[first]->Left;}if(b[first]->Right){b[rear++] = b[first]->Right;}first++;}} }

總結(jié)

以上是生活随笔為你收集整理的二叉树的层序遍历 使用队列和不使用队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。