華為oj 求二叉樹的深度和寬度

2021-07-10 09:34:30 字數 1669 閱讀 8990

求二叉樹的寬度和深度

給定乙個二叉樹,獲取該二叉樹的寬度和深度。

例如輸入

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 如果下一層沒有結點,...