数据结构_求二叉树的宽度_C语言源代码



typedef struct 
{
        BTNode *p;
        int line;
}PL;
const int M=50;
int  BTreeWidth(BTNode *T) 
{
    BTNode *s;
    int LNO;
    PL Q[M];
    int front=0,rear=0;
    int i,j;
    int max=0,num;
    if(NULL == T)  return 0;
    else
    {
        Q[rear].p=T;
        Q[rear].line=1;
        rear=(rear+1)%M;
        while(rear !=front)
        {
               s = Q[front].p; 
               LNO= Q[front].line;
               front=(front+1)%M;  
               if(s->lchild!=NULL)  
               {
                 Q[rear].p = s->lchild;
                 Q[rear].line =LNO + 1;
                 rear =(rear +1)%M;
               }
               
               if(s->rchild!=NULL)  
               {
                 Q[rear].p = s->rchild;
                 Q[rear].line =LNO + 1;
                 rear =(rear +1)%M;
               }
               
        }
        
        for(i=1;i<=LNO;++i)
        {
          num=0;                          
          for(j=1;j<=rear;++j)
          {
            if(Q[j].line==i)  ++num;
          }
          
          if(max<num)
            max=num;
           
        }
        
      return max;
        
        
        
        
        
        
        
        
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值