求二叉樹的寬度和深度
給定乙個二叉樹,獲取該二叉樹的寬度和深度。
例如輸入
a/ \
b c
/ \ / \
d e f g
返回3.
介面說明
原型:
int getbinodeinfo(binode &head, unsigned int *pulwidth, unsigned int *pulheight)
輸入引數:
head 需要獲取深度的二叉樹頭結點
輸出引數(指標指向的記憶體區域保證有效):
pulwidth 寬度
pulheight 高度
返回值:
0 成功
1 失敗或其他異常
練習階段:
中級
/*---------------------------------------
* 日期:2015-07-03
* 題目:求二叉樹的深度和寬度
-----------------------------------------*/
#include #include "oj.h"
#include #include using namespace std;
/*description
給定乙個二叉樹,獲取該二叉樹的寬度深度。
prototype
int getbinodeinfo(binode &head, unsigned int *pulwidth, unsigned int *pulheight)
input param
head 需要獲取深度的二叉樹頭結點
output param
pulwidth 寬度
pulheight 高度
return value
0 成功
1 失敗或其他異常
*/int getbinodeinfo(binode &head, unsigned int *pulwidth, unsigned int *pulheight)//if
int maxwidth = 0;
int curwidth = 0;
int height = 0;
binode* root = &head;
queuecurqueue;
queuenextqueue;
curqueue.push(root);
// 層次遍歷
while(!curqueue.empty())//if
// 右子節點不為空
if(node->right != null)//if
}//while
// 更新最大寬度
if(curwidth > maxwidth)//if
swap(curqueue,nextqueue);
}//while
*pulwidth = maxwidth;
*pulheight = height;
return 0;
}
求二叉樹的深度和寬度
求二叉樹的深度和寬度.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std struct btnode 先序建立二叉樹 void creatbtree btnode root else 求二叉樹的深度 int g...
求二叉樹的深度和寬度
二叉樹的深度 從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。二叉樹的寬度 二叉樹的每一層中都有一定數量的節點,節點數最多的那一層的節點數叫做二叉樹的寬度。假設二叉樹的節點有如下資料結構 struc node 1 求二叉樹的深度 根據剛才對二叉樹深度的說明,...
二叉樹的寬度和深度
遞迴版本 public static intgetdeep treenode root 非遞迴版本 思想 二叉樹的深度就是指二叉樹有幾層,那麼我們可以使用層序遍歷來實現。public static intgetdeep treenode root if p.right null 如果下一層沒有結點,...