題目:二叉樹最大寬度和高度
時間限制: 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...