Bird
Raised Fist0
DSA Javaprogramming~20 mins

Convert Sorted Array to Balanced BST in DSA Java - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Balanced BST Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Balanced BST Inorder Traversal
Given the sorted array [1, 2, 3, 4, 5, 6, 7], what is the inorder traversal output of the balanced BST created by the standard Convert Sorted Array to Balanced BST algorithm?
DSA Java
class TreeNode {
    int val;
    TreeNode left, right;
    TreeNode(int x) { val = x; }
}

public 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;
    }
    public void inorder(TreeNode root) {
        if (root == null) return;
        inorder(root.left);
        System.out.print(root.val + " ");
        inorder(root.right);
    }
    public static void main(String[] args) {
        Solution sol = new Solution();
        int[] arr = {1, 2, 3, 4, 5, 6, 7};
        TreeNode root = sol.sortedArrayToBST(arr);
        sol.inorder(root);
    }
}
A[1, 3, 2, 5, 4, 7, 6]
B[4, 2, 6, 1, 3, 5, 7]
C[1, 2, 3, 4, 5, 6, 7]
D[7, 6, 5, 4, 3, 2, 1]
Attempts:
2 left
💡 Hint
Inorder traversal of a BST always returns the nodes in sorted order.
🧠 Conceptual
intermediate
1:30remaining
Height of Balanced BST from Sorted Array
If you convert a sorted array of length 15 into a balanced BST using the standard method, what is the height of the resulting BST?
A3
B4
C5
D6
Attempts:
2 left
💡 Hint
Height of a balanced BST is about log2(n+1).
🔧 Debug
advanced
2:00remaining
Identify the Bug in BST Construction
What error will occur when running this code to convert a sorted array to a balanced BST?
DSA Java
public TreeNode sortedArrayToBST(int[] nums) {
    return helper(nums, 0, nums.length);
}
private TreeNode helper(int[] nums, int left, int right) {
    if (left > right) return null;
    int mid = (left + right) / 2;
    TreeNode root = new TreeNode(nums[mid]);
    root.left = helper(nums, left, mid - 1);
    root.right = helper(nums, mid + 1, right);
    return root;
}
AArrayIndexOutOfBoundsException
BNullPointerException
CStackOverflowError
DNo error, runs correctly
Attempts:
2 left
💡 Hint
Check the range used for recursion and array indexing.
🚀 Application
advanced
1:30remaining
Number of Nodes in Left Subtree
For a sorted array of length 9 converted to a balanced BST, how many nodes are in the left subtree of the root?
A5
B3
C6
D4
Attempts:
2 left
💡 Hint
The root is the middle element; left subtree contains elements before it.
📝 Syntax
expert
2:30remaining
Correct Syntax for Recursive BST Construction
Which option correctly implements the recursive method to convert a sorted array to a balanced BST in Java?
A
private TreeNode helper(int[] nums, int left, int right) {
    if (left > right) return null;
    int mid = (left + right) / 2;
    TreeNode root = new TreeNode(nums[mid]);
    root.left = helper(nums, left, mid - 1);
    root.right = helper(nums, mid + 1, right);
    return root;
}
B
private TreeNode helper(int[] nums, int left, int right) {
    if (left >= right) return null;
    int mid = (left + right) / 2;
    TreeNode root = new TreeNode(nums[mid]);
    root.left = helper(nums, left, mid);
    root.right = helper(nums, mid + 1, right);
    return root;
}
C
private TreeNode helper(int[] nums, int left, int right) {
    if (left > right) return null;
    int mid = (left + right + 1) / 2;
    TreeNode root = new TreeNode(nums[mid]);
    root.left = helper(nums, left, mid);
    root.right = helper(nums, mid + 1, right);
    return root;
}
D
private TreeNode helper(int[] nums, int left, int right) {
    if (left > right) return null;
    int mid = (left + right) / 2;
    TreeNode root = new TreeNode(nums[mid]);
    root.left = helper(nums, left, mid);
    root.right = helper(nums, mid, right);
    return root;
}
Attempts:
2 left
💡 Hint
Check base case and correct indices for recursive calls.

Practice

(1/5)
1. What is the main goal when converting a sorted array to a balanced Binary Search Tree (BST)?
easy
A. To reverse the array elements
B. To create a linked list from the array
C. To sort the array again
D. To create a BST with minimal height for efficient search

Solution

  1. Step 1: Understand the problem goal

    The goal is to convert a sorted array into a BST that is balanced, meaning the tree height is minimized.
  2. Step 2: Reason about balanced BST benefits

    A balanced BST ensures search operations are efficient, typically O(log n) time, by minimizing height.
  3. Final Answer:

    To create a BST with minimal height for efficient search -> Option D
  4. Quick Check:

    Balanced BST = minimal height = efficient search [OK]
Hint: Balanced BST means minimal height for fast search [OK]
Common Mistakes:
  • Thinking the array needs to be reversed
  • Confusing BST with linked list
  • Ignoring the balance requirement
2. Which Java method signature correctly represents the recursive function to convert a sorted array to a balanced BST?
easy
A. public TreeNode sortedArrayToBST(int[] nums, int left, int right)
B. public void sortedArrayToBST(int[] nums)
C. public int sortedArrayToBST(int[] nums, int start)
D. public TreeNode sortedArrayToBST(int[] nums, int mid)

Solution

  1. Step 1: Identify parameters needed for recursion

    The recursive function needs the array and two indices (left and right) to define the current subarray.
  2. Step 2: Check return type and parameters

    The function returns a TreeNode (root of subtree) and takes int[] nums, int left, int right as parameters.
  3. Final Answer:

    public TreeNode sortedArrayToBST(int[] nums, int left, int right) -> Option A
  4. Quick Check:

    Recursive BST function needs array + left + right indices [OK]
Hint: Recursive BST needs array and left-right indices [OK]
Common Mistakes:
  • Missing left and right indices parameters
  • Wrong return type (void or int)
  • Using mid as parameter instead of indices
3. What is the output tree structure (inorder traversal) after running the code below?
int[] nums = {1, 2, 3, 4, 5};
TreeNode root = sortedArrayToBST(nums, 0, nums.length - 1);
printInorder(root);
Assuming printInorder prints nodes in inorder.
medium
A. [1, 2, 3, 4, 5]
B. [3, 2, 1, 4, 5]
C. [5, 4, 3, 2, 1]
D. [2, 3, 4, 5, 1]

Solution

  1. Step 1: Understand inorder traversal of BST

    Inorder traversal of a BST always returns the sorted order of elements.
  2. Step 2: Check input array and output

    The input array is sorted: [1, 2, 3, 4, 5]. The inorder traversal of the BST built from it will be the same sorted array.
  3. Final Answer:

    [1, 2, 3, 4, 5] -> Option A
  4. Quick Check:

    Inorder traversal of BST = sorted array [OK]
Hint: Inorder traversal of BST returns sorted array [OK]
Common Mistakes:
  • Confusing preorder or postorder with inorder
  • Expecting reversed or shuffled output
  • Not understanding BST property
4. Identify the error in the following code snippet for converting a sorted array to a balanced BST:
public TreeNode sortedArrayToBST(int[] nums, int left, int right) {
  if (left > right) return null;
  int mid = (left + right) / 2;
  TreeNode root = new TreeNode(nums[mid]);
  root.left = sortedArrayToBST(nums, left, mid - 1);
  root.right = sortedArrayToBST(nums, mid + 1, right);
  return root;
}

// Called with sortedArrayToBST(nums, 0, nums.length);
medium
A. The base case condition is incorrect
B. The initial call uses wrong right index
C. The mid calculation causes overflow
D. The TreeNode constructor is missing

Solution

  1. Step 1: Check the initial call parameters

    The function expects right to be the last valid index, but the call uses nums.length which is out of bounds.
  2. Step 2: Understand array indexing

    Array indices go from 0 to nums.length - 1, so right should be nums.length - 1.
  3. Final Answer:

    The initial call uses wrong right index -> Option B
  4. Quick Check:

    Right index must be nums.length - 1, not nums.length [OK]
Hint: Right index = last array index (length - 1) [OK]
Common Mistakes:
  • Passing nums.length as right index
  • Ignoring zero-based indexing
  • Assuming mid calculation causes overflow here
5. Given a sorted array with duplicate values: int[] nums = {1, 2, 2, 3, 4, 4, 5}; Which statement about the balanced BST created by sortedArrayToBST(nums, 0, nums.length - 1) is true?
hard
A. The BST will only keep unique values in left subtree
B. The BST will remove duplicates automatically
C. The BST will contain duplicate nodes for repeated values
D. The BST will throw an error due to duplicates

Solution

  1. Step 1: Understand BST property with duplicates

    BST can contain duplicates; they are usually placed consistently either left or right subtree.
  2. Step 2: Check behavior of conversion from sorted array

    The conversion uses array elements as nodes directly, so duplicates appear as separate nodes in the tree.
  3. Final Answer:

    The BST will contain duplicate nodes for repeated values -> Option C
  4. Quick Check:

    Duplicates in array = duplicates in BST nodes [OK]
Hint: Duplicates in array become duplicate nodes in BST [OK]
Common Mistakes:
  • Assuming duplicates are removed automatically
  • Thinking duplicates cause errors
  • Believing duplicates go only to left subtree
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard