LeetCode Entry
1161. Maximum Level Sum of a Binary Tree
Min level max sum in tree
1161. Maximum Level Sum of a Binary Tree medium blog post substack youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/1229
Problem TLDR
Min level max sum in tree #medium
Intuition
Use BFS or DFS.
Approach
- compute max only after all number are added in this level
Complexity
-
Time complexity: \(O(n)\)
-
Space complexity: \(O(n)\)
Code
// 34ms
fun maxLevelSum(r: TreeNode?) = ArrayDeque<TreeNode>().let { q ->
q += r!!; (1..25).maxBy { if (q.size < 1) -100001 else
(1..q.size).sumOf { q.removeFirst().run {
left?.let { q += it }; right?.let { q += it }; `val`
}}
}
}
// 6ms
pub fn max_level_sum(r: Option<Rc<RefCell<TreeNode>>>) -> i32 {
let (mut m, mut ml) = ([0;27],0);
fn dfs(m: &mut[i32], ml: &mut usize, l: usize, n: &Option<Rc<RefCell<TreeNode>>>) {
let Some(n) = n else { return }; if l > 25 { return }; let n = n.borrow();
m[l] += n.val; *ml = l.max(*ml); dfs(m, ml, l+1, &n.left); dfs(m, ml, l+1, &n.right)
}
dfs(&mut m, &mut ml, 0, &r); -(0..=ml).map(|i|(m[i],-(i as i32)-1)).max().unwrap().1
}