1class Solution {
2 public TreeNode sortedArrayToBST(int[] nums) {
3 if (nums == null || nums.length == 0) return null;
4 return helper(nums, 0, nums.length - 1);
5 }
6
7 private TreeNode helper(int[] nums, int left, int right) {
8 if (left > right) {
9 return null; // base case
10 }
11
12 int mid = left + (right - left) / 2; // find middle element
13
14 TreeNode node = new TreeNode(nums[mid]); // create the root node
15
16 node.left = helper(nums, left, mid - 1); // recursively create left subtree
17 node.right = helper(nums, mid + 1, right); // recursively create right subtree
18
19 return node; // return the constructed node
20 }
21}