LeetCode Entry

110. Balanced Binary Tree

08.02.2026 easy 2026 kotlin rust

Is tree balanced?

110. Balanced Binary Tree easy blog post substack youtube

a2bb7e56-105b-45cc-a303-72c60366d33c (1).webp

Join me on Telegram

https://t.me/leetcode_daily_unstoppable/1262

Problem TLDR

Is tree balanced? #easy #dfs

Intuition

Solve the sub-problem for every node. Compare max depths for the left and right.

Approach

  • we can use ‘marker’ depth as a boolean
  • we can shortcircuit and don’t check the right subtree
  • we can override values in a tree to golf the solutino
  • BFS will not solve this: leafs can be at any heights, only max depths left&right for each node matters

Complexity

  • Time complexity: \(O(n)\)

  • Space complexity: \(O(log(n))\)

Code

// 0ms
    fun isBalanced(r: TreeNode?): Boolean = r?.run {
        val b = isBalanced(left) && isBalanced(right)
        val l = left?.`val`?:0; val r = right?.`val`?:0
        `val`= 1 + max(l,r); b && abs(l-r) < 2
    } ?: true
// 0ms
    pub fn is_balanced(r: Option<Rc<RefCell<TreeNode>>>) -> bool {
        fn d(r: &Option<Rc<RefCell<TreeNode>>>) -> Result<i8, ()> {
            let Some(n) = r else { return Ok(0) }; let n = n.borrow();
            let l = d(&n.left)?; let r = d(&n.right)?;
            if (l-r).abs() > 1 { Err(()) } else { Ok(1 + l.max(r)) }
        }
        d(&r).is_ok()
    }