ツリーの幅を求める


ツリーの幅を求めるアルゴリズム
void width(Tree T)              //      
{
	int w = 0, wmax = 1, last = -1;
	Tree p;
	queue q;
	q.front = q.rear = -1;
	if(T == NULL)
		printf("       0!
"); else { q.data[++q.rear] = T; last = q.rear; while(q.front < q.rear) { p = q.data[++q.front]; if(p->lchild != NULL) q.data[++q.rear] = p->lchild; if(p->rchild != NULL) q.data[++q.rear] = p->rchild; w++; if(q.front == last) { if(w > wmax) wmax = w; w = 0; last = q.rear; } } printf(" %d!
", wmax); } }