#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define MAXSIZE 100
typedef struct BTNode
{
struct BTNode *lchild,*rchild;
int data;
}BTNode,*btnode;
typedef struct
{
btnode p;
int lno;
}St;
void createBtree(btnode &T)
{
int t;
scanf("%d",&t);
if(t==0)
T=NULL;
else
{
T=(btnode)malloc(sizeof(BTNode));
T->data=t;
createBtree(T->lchild);
createBtree(T->rchild);
}
}
int maxWidth(btnode &b)
{
St que[MAXSIZE];
int front,rear,n;
int Lno,i,j,max;
btnode q;
front=rear=0;
if(b)
{
++rear;
que[rear].p=b;
que[rear].lno=1;
while(front!=rear)
{
++front;
q=que[front].p;
Lno=que[front].lno;
if(q->lchild)
{
++rear;
que[rear].p=q->lchild;
que[rear].lno=Lno+1;
}
if(q->rchild)
{
++rear;
que[rear].p=q->rchild;
que[rear].lno=Lno+1;
}
}
max=0;
for(i=1;i<=Lno;i++)
{
n=0;
for(j=1;j<=rear;j++)
if(que[j].lno==i)
++n;
if(n>max)
max=n;
}
return max;
}
else
return 0;
}
void main()
{
btnode T;
int w;
createBtree(T);
w=maxWidth(T);
printf("width=%d\n",w);
}
求二叉树宽度
最新推荐文章于 2022-11-06 21:49:35 发布