二叉樹算法驗證(1)層次遍歷算法的驗證

問題及代碼:

問題描述:  運行並重複測試教學內容中涉及的算法。改變測試數據進行重複測試的意義在於,可以從更多角度體會算法,以達到逐漸掌握算法的程度。使用你的測試數據,並展示測試結果,觀察運行結果,以此來領會算法。   
輸入描述: 若干測試數據。 
程序輸出: 對應數據的輸出。 

二叉樹代碼


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;  
}

運行結果

這裏寫圖片描述


知識點總結:

層次遍歷算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章