题目:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:
跟上题的思路一样,但这题更简单,因为数组可以随便取到中间的值,不需要通过快慢指针。
代码:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode sortedArrayToBST(int[] num) { int len = num.length; if(num==null || len==0){ return null; } return BST(num,0,len-1); } public TreeNode BST(int[] num,int start,int end){ if(start>end){ return null; } int mid = (start+end)/2+(start+end)%2; TreeNode root = new TreeNode(num[mid]); root.right = BST(num,mid+1,end); root.left = BST(num,start,mid-1); return root; } }