二叉樹最大寬度和高度(codevs1501)

2021-09-30 14:46:10 字數 1010 閱讀 2051

題目:二叉樹最大寬度和高度

時間限制: 1 s

空間限制: 128000 kb

題目描述:

給出乙個二叉樹,輸出它的最大寬度和高度。

輸入描述 input description

第一行乙個整數n。

下面n行每行有兩個數,對於第i行的兩個數,代表編號為i的節點所連線的兩個左右兒子的編號。如果沒有某個兒子為空,則為0。

輸出描述 output description

輸出共一行,輸出二叉樹的最大寬度和高度,用乙個空格隔開。

樣例輸入 sample input

52 3

4 50 0

0 00 0

樣例輸出 sample output

2 3資料範圍及提示 data size & hint

n<16

預設第乙個是根節點

以輸入的次序為編號

2-n+1行指的是這個節點的左孩子和右孩子

注意:第二題有極端資料!

0 0

這題你們別想投機取巧了,給我老老實實搜尋!

題解:

很明顯,這題可以用dfs(深搜)解決,把某個點的左右兒子節點儲存到乙個陣列裡,然後開始dfs,函式中要保留當前節點的層數,另外用乙個陣列儲存當前層數的節點數量(就是寬度嘛)

#include< iostream>

#include< cstdio>

using namespace std;

int t[10000][3],h[10000],n,ans=0,wide=0; //h[k]儲存第k層的節點數量,t[i][1],t[i][2]儲存編號為i的節點的左右兒子點編號。

void dfs(int i,int k) //i為節點編號,k為節點所在層數

int main()

dfs(1,1); //開始dfs,從根節點開始,(根節點在第一層)

printf(「%d %d」,wide,ans);

return 0;

}

二叉樹最大寬度和高度

題目描述 description 給出乙個二叉樹,輸出它的最大寬度和高度。輸入描述 input description 第一行乙個整數n。下面n行每行有兩個數,對於第i行的兩個數,代表編號為i的節點所連線的兩個左右兒子的編號。如果沒有某個兒子為空,則為0。輸出描述 output descriptio...

樹 二叉樹最大寬度和高度

題目描述 題目描述 description 給出乙個二叉樹,輸出它的最大寬度和高度。輸入描述 input description 第一行乙個整數n。下面n行每行有兩個數,對於第i行的兩個數,代表編號為i的節點所連線的兩個左右兒子的編號。如果沒有某個兒子為空,則為0。輸出描述 output descr...

二叉樹的最大寬度和高度

題目描述 description 給出乙個二叉樹,輸出它的最大寬度和高度。輸入描述 input description 第一行乙個整數n。下面n行每行有兩個數,對於第i行的兩個數,代表編號為i的節點所連線的兩個左右兒子的編號。如果沒有某個兒子為空,則為0。輸出描述 output descriptio...