数据结构(C语言版) 树和二叉树 算法设计Demo5

Posted Aiden (winner)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言版) 树和二叉树 算法设计Demo5相关的知识,希望对你有一定的参考价值。

计算二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)。

[题目分析]

求二叉树高度的算法见上题。求最大宽度可采用层次遍历的方法,记下各层结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。

[算法描述]

int Width(BiTree bt)//求二叉树bt的最大宽度
	if(bt==null) 
		return (0);  //空二叉树宽度为0
	else
		BiTree Q[];//Q是队列,元素为二叉树结点指针,容量足够大
		front=1;rear=1;last=1;
	//front队头指针,rear队尾指针,last同层最右结点在队列中的位置
	temp=0; maxw=0;       //temp记局部宽度, maxw记最大宽度
	Q[rear]=bt;           //根结点入队列
	while(front<=last)
		p=Q[front++]; temp++; //同层元素数加1
	if (p->lchild!=null)  Q[++rear]=p->lchild;   //左子女入队
	if (p->rchild!=null)  Q[++rear]=p->rchild;   //右子女入队
	if (front>last)      //一层结束, 
		last=rear;
		if(temp>maxw) maxw=temp;
		//last指向下层最右元素, 更新当前最大宽度
			 temp=0;
		//if    
	//while
	return (maxw);
//结束width

以上是关于数据结构(C语言版) 树和二叉树 算法设计Demo5的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(C语言版) 树和二叉树 算法设计Demo3

数据结构(C语言版) 树和二叉树 算法设计Demo6

数据结构(C语言版) 树和二叉树 算法设计Demo4

数据结构(C语言版) 树和二叉树 算法设计Demo2

数据结构(C语言版) 树和二叉树 算法设计Demo7

数据结构C语言版 —— 树和二叉树的概念