Bird
Raised Fist0
DSA Javaprogramming~10 mins

Convert Sorted Array to Balanced BST in DSA Java - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to find the middle index of the array segment.

DSA Java
int mid = start + (end [1] start) / 2;
Drag options to blanks, or click blank then click option'
A-
B/
C+
D*
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' instead of '-' causes incorrect mid calculation.
Using '*' or '/' in place of '-' leads to wrong index.
2fill in blank
medium

Complete the code to create a new TreeNode with the middle element.

DSA Java
TreeNode node = new TreeNode(nums[1]);
Drag options to blanks, or click blank then click option'
A(mid)
B[mid]
C{mid}
D<mid>
Attempts:
3 left
💡 Hint
Common Mistakes
Using parentheses () instead of square brackets [] for array access.
Using curly braces or angle brackets which are invalid here.
3fill in blank
hard

Fix the error in the recursive call to build the left subtree.

DSA Java
node.left = sortedArrayToBST(nums, start, [1]);
Drag options to blanks, or click blank then click option'
Amid - 1
Bstart
Cend
Dmid + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using mid + 1 causes overlap with right subtree.
Using end or start incorrectly changes the segment.
4fill in blank
hard

Fill both blanks to complete the recursive call for the right subtree.

DSA Java
node.right = sortedArrayToBST(nums, [1], [2]);
Drag options to blanks, or click blank then click option'
Amid + 1
Bstart
Cend
Dmid - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using start or mid - 1 as start index for right subtree.
Using mid + 1 as end index instead of start.
5fill in blank
hard

Fill all three blanks to complete the base case and recursive structure.

DSA Java
if (start [1] end) return null;
int mid = start + (end - start) / 2;
TreeNode node = new TreeNode(nums[2]);
node.left = sortedArrayToBST(nums, start, mid [3] 1);
Drag options to blanks, or click blank then click option'
A>
B[mid]
C-
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' in base case.
Using parentheses instead of square brackets for array access.
Using '+' instead of '-' for left subtree end index.

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