import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return TreeNode类 */ public TreeNode sortedArrayToBST (int[] nums) { TreeNode root = null; if (nums == null || nums.length == 0) { return root; } if (nums.length == 1) { return new TreeNode(nums[0]); } int i = nums.length / 2 ; root=new TreeNode(nums[i]); // 分割为左侧和右侧数组 int[] leftPart = Arrays.copyOfRange(nums, 0, i ); int[] rightPart = Arrays.copyOfRange(nums, i + 1, nums.length); root.left = sortedArrayToBST(leftPart); root.right = sortedArrayToBST(rightPart); // write code here return root; } }
思路:二分法 切割 然后 递归即可