天天看點

王道課後習題4.3.14:求非空二叉樹b的寬度

void level_breath(TNode* T)
{
    Queue Q;
    InitQueue(Q);
    TNode* p=T;
    int level=0;
    int last=1;
    int a[MaxSize];
    for(int i=0;i<MaxSize;i++)
    {
        a[i]=0;
    }
    if(T!=NULL)
    {
        EnQueue(Q,p);
        while(!QueueEmpty(Q))
        {
            DeQueue(Q,p);//操作隊頭
            if(Q.fron!=last+1)
            {
                a[level]++;
            }
            if(p->lchild!=NULL)
                EnQueue(Q,p->lchild);
            if(p->rchild!=NULL)
                EnQueue(Q,p->rchild);
            if(Q.fron==last)
            {
                level++;
                last=Q.rear;
            }
        }
    }
    int Max=a[0];
    for(int i=1;i<level;i++)
    {
        if(a[i]>Max)
            Max=a[i];
    }
    printf("%d",Max);
}

           

繼續閱讀