← Back to Leo Academy Masterclass

Problem #108: Convert Sorted Array to Binary Search Tree

Easy Binary Search Tree

Intuition & Strategy Breakdown

Pick the middle element of the sorted array as root to ensure balance, recursively constructing left subtree from left half and right subtree from right half.

Python Solution

class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
        def helper(l, r):
            if l > r:
                return None
            
            m = (l + r) // 2
            root = TreeNode(nums[m])
            root.left = helper(l, m - 1)
            root.right = helper(m + 1, r)
            return root
        
        return helper(0, len(nums) - 1)

Java Solution

class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return helper(nums, 0, nums.length - 1);
    }
    
    private TreeNode helper(int[] nums, int left, int right) {
        if (left > right) return null;
        
        int mid = left + (right - left) / 2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = helper(nums, left, mid - 1);
        root.right = helper(nums, mid + 1, right);
        return root;
    }
}
Watch Interactive Video on Leo Academy Main App