Skip to main content
Back to problems
#1161
Medium Algorithms

Maximum level sum of a binary tree

Tree Depth-First Search Breadth-First Search Binary Tree
70.0% acceptance
Feb 27, 2026
4120
116
Given the root of a binary tree, the level of its root is 1, the level of its children is 2, and so on. Return the smallest level x such that the sum of all the values of nodes at level x is maximal.

Solution

Rust
Time O(n²)
Space O(n)
LeetCode
solution.rs
use std::collections::VecDeque;
use std::rc::Rc;
use std::cell::RefCell;
impl Solution {
  pub fn max_level_sum(root: Option<std::rc::Rc<std::cell::RefCell<TreeNode>>>) -> i32 {
    let mut queue = VecDeque::new();
    if let Some(r) = root { queue.push_back(r); }
    let mut max_sum = i32::MIN;
    let mut best_level = 1;
    let mut level = 1;
    while !queue.is_empty() {
      let size = queue.len();
      let mut sum = 0;
      for _ in 0..size {
        let node = queue.pop_front().unwrap();
        sum += node.borrow().val;
        if let Some(l) = node.borrow().left.clone()  { queue.push_back(l); }
        if let Some(r) = node.borrow().right.clone() { queue.push_back(r); }
      }
      if sum > max_sum { max_sum = sum; best_level = level; }
      level += 1;
    }
    best_level
  }
}