1. 程式人生 > >給定一個二叉樹,獲取該二叉樹的寬度深度

給定一個二叉樹,獲取該二叉樹的寬度深度

prototype %d param unsigned right idt height push signed

題目:

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;
}


給定一個二叉樹,獲取該二叉樹的寬度深度