给定一个二叉树,获取该二叉树的宽度深度

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给定一个二叉树,获取该二叉树的宽度深度相关的知识,希望对你有一定的参考价值。

题目:

Description  

         给定一个二叉树,获取该二叉树的宽度深度。


Prototype
         int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
Input Param 
         head   须要获取深度的二叉树头结点
Output Param 
         pulWidth   宽度
         pulHeight  高度
Return Value
         0          成功

         1          失败或其它异常

分析:使用二叉树的层序遍历,使用队列非常easy的解决这个问题

代码例如以下:

int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
{
	/*在这里实现功能*/
	if(&head==NULL)
		return -1;
	*pulWidth=0;
	*pulHeight=0;
	queue<BiNode*> biStack;
	biStack.push(&head);
	while(!biStack.empty()){
		++(*pulHeight);
		if(biStack.size()>*pulWidth)
			*pulWidth=biStack.size();
		int i=biStack.size();
		while(i>0){
			BiNode * temp=biStack.front();
			biStack.pop();
			if(temp->left!=NULL)
				biStack.push(temp->left);
			if(temp->right!=NULL)
				biStack.push(temp->right);
			i--;
		}
	}
	printf("pulWidth=%d\n pulHeight=%d\n",*pulWidth,*pulHeight);
	return 0;
}


以上是关于给定一个二叉树,获取该二叉树的宽度深度的主要内容,如果未能解决你的问题,请参考以下文章

数据结构二叉树的基础操作( 1.创建二叉树2.先序遍历3.中序排序4.后序遍历 5.层序遍历6. 统计节点的数目 7.交换左右子树 8.计算并输出该二叉树的深度)

算法题0009 | 求完全二叉树结点个数

二叉树的深度

二叉树--二叉树的宽度

代码题— 二叉树的深度

二叉树--二叉树的最大深度