題目連結(jié):
題目意譯:
你被給定一棵二元樹的根節(jié)點(diǎn) root 以及一個(gè)正整數(shù) k。
樹中的階層和為同一階層上所有節(jié)點(diǎn)值之總和。
回傳樹中第 k 大的階層和(總和值不一定彼此相異)。如果樹中少於 k 個(gè)階層,則回傳 -1。
注意到兩個(gè)節(jié)點(diǎn)衛(wèi)位於同一階層,代表著它們距離根節(jié)點(diǎn)是一樣的。
限制:
樹中的節(jié)點(diǎn)數(shù)為 n。
2 ≦ n ≦ 10 ^ 5
1 ≦ Node.val ≦ 10 ^ 6
1 ≦ k ≦ n
範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: root = [5,8,9,2,1,3,7,4,6], k = 2
輸出: 13
解釋: 各個(gè)階層和為以下:
- 階層 1: 5。
- 階層 2: 8 + 9 = 17。
- 階層 3: 2 + 1 + 3 + 7 = 13。
- 階層 4: 4 + 6 = 10。
第 2 大的階層和為 13。
範(fàn)例 2:
輸入: root = [1,2,null,3], k = 1
輸出: 3
解釋: 最大的階層和為 3。
解題思維:
就是單純地進(jìn)行一次階層探訪(參見
這題)並算出每一層的總和並排序得到第 k 大即可。當(dāng)然,如果階層不足 k 層則直接回傳 -1。
此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。