又是二叉树,最开始都忘记了二叉搜索树是什么意思,搜索了一下:
二叉搜索树:左节点都小于右节点,在这里就可以考虑将数组中的中间值作为根节点
平衡二叉树:就是左右节点高度不大于1
树就可以想到递归与迭代,平衡二叉树就只需要每个节点都是平衡二叉树,不断取中点作为root。
不是很需要考虑二叉搜索树,因为给的数组就是有序数组。
class Solution { public TreeNode sortedArrayToBST(int[] nums) { return test(nums,0,nums.length-1); } public TreeNode test(int[] nums,int left,int right) { if(left > right) { return null; } int mid = (left + right)/2; TreeNode root = new TreeNode(nums[mid]); root.left = test(nums,left,mid-1); root.right = test(nums,mid+1,right); return root; } }