๐ฒ ์ด๋ณด์๋ฅผ ์ํ ๊ฐ์ด๋ 'Maximum Level Sum of a Binary Tree' โ LeetCode 1161 (C++, Python, JavaScript)
Iโm happy to translate the article for you, but Iโll need the actual text youโd like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the text, Iโll keep the source link unchanged and translate the rest into Korean while preserving the original formatting and markdown.
๋ฌธ์ ์์ฝ
์ด์ง ํธ๋ฆฌ์ root๊ฐ ์ฃผ์ด์ง๋๋ค. ๊ฐ ๋
ธ๋๋ ์ ์ ๊ฐ์ ์ ์ฅํ๊ณ ์์ต๋๋ค.
๋ฃจํธ๋ ๋ ๋ฒจโฏ1, ๊ทธ ์์๋ค์ ๋ ๋ฒจโฏ2, ์ด๋ฐ ์์ผ๋ก ๋ ๋ฒจ์ด ์ฆ๊ฐํฉ๋๋ค.
๋ชฉํ:
๋
ธ๋ ๊ฐ๋ค์ ํฉ์ด ์ต๋์ธ ๋ ๋ฒจ ๋ฒํธ๋ฅผ ๋ฐํํฉ๋๋ค.
์ฌ๋ฌ ๋ ๋ฒจ์ด ๋์ผํ ์ต๋ ํฉ์ ๊ฐ์ง ๊ฒฝ์ฐ, ๊ฐ์ฅ ์์(์ฆ, ๊ฐ์ฅ ๋์) ๋ ๋ฒจ ๋ฒํธ๋ฅผ ๋ฐํํฉ๋๋ค.
์์

Input: root = [1,7,0,7,-8,null,null]
Output: 2
Explanation:
Level 1 sum = 1
Level 2 sum = 7 + 0 = 7
Level 3 sum = 7 + (-8) = -1
โ The maximum sum is 7, occurring at level 2.
์ค๋ช
:
๋ ๋ฒจโฏ1์ ํฉ์ 1, ๋ ๋ฒจโฏ2์ ํฉ์ 7โฏ+โฏ0โฏ=โฏ7, ๋ ๋ฒจโฏ3์ ํฉ์ 7โฏ+โฏ(-8)โฏ=โฏ-1์
๋๋ค.
โ ์ต๋ ํฉ์ 7์ด๋ฉฐ, ์ด๋ ๋ ๋ฒจโฏ2์์ ๋ฐ์ํฉ๋๋ค.
์ง๊ด
ํธ๋ฆฌ๋ฅผ ๋ ๋ฒจ๋ณ๋ก ์ดํด๋ณด๋ ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ด ๋ฐฉ๋ฒ์ ๋๋น ์ฐ์ ํ์(BFS) ์
๋๋ค.
ํ๋์ ๊ฐ์ง๋ฅผ ๊น๊ฒ ํ๊ณ ๋ค๊ธฐ๋ณด๋ค๋, BFS๋ ํ๋ฅผ ์ฌ์ฉํด ํ์ฌ โ์ธตโ์ ์๋ ๋ชจ๋ ๋
ธ๋๋ฅผ ์ฒ๋ฆฌํ ๋ค ๋ค์ ์ธต์ผ๋ก ์ด๋ํฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ ๊ฐ์
- ๋ฃจํธ ๋ ธ๋๋ก ํ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
- ํ๊ฐ ๋น์ด ์์ง ์์ ๋์:
- ํ์ฌ ํ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ก โ ์ด ๋ ๋ฒจ์ ์๋ ๋ ธ๋ ์.
- ๊ฐ ๋
ธ๋๋ฅผ dequeueํ๊ณ , ๊ทธ ๊ฐ์
levelSum์ ๋์ ํ ๋ค, null์ด ์๋ ์์๋ค์ enqueueํฉ๋๋ค. - ๋ ๋ฒจ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด
levelSum์ ์ง๊ธ๊น์ง ๋ณธ ์ต๋๊ฐ๊ณผ ๋น๊ตํ๊ณ , ํ์ํ๋ฉด ๋ต์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ต๋ ํฉ์ ๋ง๋ ๋ ๋ฒจ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํฉ๋๋ค.
BFS๋ O(N) ์๊ฐ(๊ฐ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธ)๊ณผ O(W) ์ถ๊ฐ ๊ณต๊ฐ์ ๋ณด์ฅํฉ๋๋ค. ์ฌ๊ธฐ์ W๋ ํธ๋ฆฌ์ ์ต๋ ๋๋น(๊ฐ์ฅ ํฐ ๋ ๋ฒจ์ ํฌ๊ธฐ)์ ๋๋ค.
์ฝ๋ ๋ธ๋ก
C++
class Solution {
public:
int maxLevelSum(TreeNode* root) {
if (!root) return 0;
long long maxSum = LLONG_MIN; // handles negative values
int maxLevel = 1;
int curLevel = 1;
queue q;
q.push(root);
while (!q.empty()) {
int sz = q.size();
long long levelSum = 0;
for (int i = 0; i val;
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
if (levelSum > maxSum) {
maxSum = levelSum;
maxLevel = curLevel;
}
++curLevel;
}
return maxLevel;
}
};
ํ์ด์ฌ
from collections import deque
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxLevelSum(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
max_sum = float('-inf')
max_level = 1
cur_level = 1
q = deque([root])
while q:
level_sum = 0
for _ in range(len(q)):
node = q.popleft()
level_sum += node.val
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
if level_sum > max_sum:
max_sum = level_sum
max_level = cur_level
cur_level += 1
return max_level
์๋ฐ์คํฌ๋ฆฝํธ
/**
* @param {TreeNode} root
* @return {number}
*/
var maxLevelSum = function (root) {
if (!root) return 0;
let maxSum = -Infinity;
let maxLevel = 1;
let curLevel = 1;
const queue = [root];
while (queue.length) {
const levelSize = queue.length;
let levelSum = 0;
for (let i = 0; i maxSum) {
maxSum = levelSum;
maxLevel = curLevel;
}
++curLevel;
}
return maxLevel;
};
Key Takeaways
- **BreadthโFirst Search (BFS)**๋ โ๋ ๋ฒจโ์์โ ํธ๋ฆฌ ๋ฌธ์ ์ ๊ฐ์ฅ ์ ํฉํ ๊ธฐ๋ฒ์ด๋ค.
- queue(๋๋ Python์
deque)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ๋ ๋ฒจ์ ๋ ธ๋๋น O(1) ํ๊ท ์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. - ๋
ธ๋ ๊ฐ์ด ์์์ผ ์ ์์ผ๋ฏ๋ก โ์ต๋ ํฉโ์ ๊ฐ์ฅ ์์ ๊ฐ(
LLONG_MIN,-Infinity, ๋๋-inf)์ผ๋ก ์ด๊ธฐํํ๋ค. - ์๊ฐ ๋ณต์ก๋: O(N), ์ฌ๊ธฐ์ N์ ๋ ธ๋ ์์ด๋ค.
- ๊ณต๊ฐ ๋ณต์ก๋: O(W), ์ฌ๊ธฐ์ W๋ ํธ๋ฆฌ์ ์ต๋ ๋๋น์ด๋ฉฐ(์์ ๊ท ํ ํธ๋ฆฌ์ ์ต์ ๊ฒฝ์ฐ O(N)).
์ต์ข ์๊ฐ
์ด ๋ฌธ์ ๋ ๋๊ท๋ชจ ์์คํ ์์ ๋ํ๋๋ ํธ๋ฆฌ ์ํ ํจํด์ ์๊ฐํ๋ ํ๋ฅญํ ์ ๋ฌธ์์ ๋๋ค:
- ๊ฒ์ ์์ง ์ธ๋ฑ์ฑ์ ์ข ์ข BFS์ ์ ์ฌํ ํฌ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํํ์ด์ง์์ ์์ํด ํ์ด์ง๋ฅผ ๋ ๋ฒจ๋ณ๋ก ํ์ํ๋ฉฐ, ๊ฐ์ฅ โ์ค์ํโ(์ต์์) ์ฝํ ์ธ ๊ฐ ๋จผ์ ์ฒ๋ฆฌ๋๋๋ก ํฉ๋๋ค.
- ์์ ๋คํธ์ํฌ ๋ถ์์์๋ ๊ฐ์ฅ ํ๋์ด ๋ง์ ๋ ๋ฒจ์ ์ฐพ๋ ๊ฒ์ด โ์ต๋ ๋ ๋ฒจ ํฉโ ๊ฐ๋ ์ ๋ฐ์ํ๋ฉฐ, ๊ฐ์ฅ ์ํฅ๋ ฅ ์๋ ์ฌ์ฉ์ โ์ธตโ์ ์๋ณํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
BFS์ ํ ๊ด๋ฆฌ์ ๋ฅ์ํด์ง๋ฉด ๋ค์ํ ์ค์ ๊ทธ๋ํ ๋ฐ ํธ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ญ๋์ ๊ฐ์ถ๊ฒ ๋ฉ๋๋ค. ์ฝ๋ฉ์ ์ฆ๊ธฐ์ธ์!
๊ฐ์ฅ ์ ๋งํ ๋ถ๋ฆฌ ์ฐจ์ ์๋ณ
๊ทธ๋ํ ๋ถ์์์ ๊ฐ์ฅ ๋ง์ ์ ์ฌ์ ์ฐ๊ฒฐ์ ํฌํจํ๋ **โdegree of separationโ**์ ์๋ณํ๋ ๊ฒ์ ์ค์ํ ๋จ๊ณ์ ๋๋ค. BreadthโFirst Search (BFS) ๋ฅผ ์๋ฌํ๋ ๊ฒ์ Google์ด๋ Meta์ ๊ฐ์ ๊ธฐ์ ์ ๊ธฐ์ ๋ฉด์ ์์ ํต์ฌ ์๊ตฌ ์ฌํญ์ ๋๋ค.