题目链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/submissions/
解题思路:
这个题有点类似二分查找,根节点在正中间,左子树的根节点在左边一半数组的正中间,右子树的根节点在右边一半数组的正中间;于是可以递归解决:先确定根节点,然后构造左子树,然后构造右子树, 结束条件类似二分查找(low > high)。
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 public TreeNode sortedArrayToBST(int[] nums) { 12 if(nums==null) 13 return null; 14 return get(nums,0,nums.length-1); 15 } 16 public TreeNode get(int []nums,int l,int r) 17 { 18 if(l<=r) 19 { 20 int mid = (l+r)/2; 21 TreeNode root = new TreeNode(nums[mid]); 22 root.left =get(nums,l,mid-1); 23 root.right = get(nums,mid+1,r); 24 return root; 25 } 26 else 27 { 28 return null; 29 } 30 } 31 }