1. 程式人生 > >資料結構例程——二叉樹的層次遍歷演算法

資料結構例程——二叉樹的層次遍歷演算法

【二叉樹的層次遍歷演算法】
  實現二叉樹的層次遍歷演算法,並對用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”建立的二叉樹進行測試。
  請利用二叉樹演算法庫

[參考解答](btreee.h見演算法庫

#include <stdio.h>
#include "btree.h"

void LevelOrder(BTNode *b)
{
    BTNode *p;
    BTNode *qu[MaxSize];    //定義環形佇列,存放節點指標
    int front,rear; //定義隊頭和隊尾指標
    front=rear=-1
; //置佇列為空佇列 rear++; qu[rear]=b; //根節點指標進入佇列 while (front!=rear) //佇列不為空 { front=(front+1)%MaxSize; p=qu[front]; //隊頭出佇列 printf("%c ",p->data); //訪問節點 if (p->lchild!=NULL) //有左孩子時將其進隊 { rear=(rear+1)%MaxSize; qu[rear]=p->lchild; } if
(p->rchild!=NULL) //有右孩子時將其進隊 { rear=(rear+1)%MaxSize; qu[rear]=p->rchild; } } } int main() { BTNode *b; CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"); printf("二叉樹b: "); DispBTNode(b); printf("\n"); printf("層次遍歷序列:\n"
); LevelOrder(b); DestroyBTNode(b); return 0; }

注:在main函式中,建立的用於測試的二叉樹如下——
這裡寫圖片描述