給定一個二叉樹,獲取該二叉樹的寬度深度
阿新 • • 發佈:2017-06-01
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; }
給定一個二叉樹,獲取該二叉樹的寬度深度