题解 | #将升序数组转化为平衡二叉搜索树# 分治法
将升序数组转化为平衡二叉搜索树
https://www.nowcoder.com/practice/7e5b00f94b254da599a9472fe5ab283d
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类 */ TreeNode buildTree(int arr[]){ int len = arr.length; if(len == 0){ return null; } if(len == 1){ return new TreeNode(arr[0]); } int midIdx = len/2; int midVal = arr[midIdx]; TreeNode node = new TreeNode(midVal); node.left = buildTree(Arrays.copyOfRange(arr,0,midIdx)); node.right = buildTree(Arrays.copyOfRange(arr,midIdx+1,len)); return node; } public TreeNode sortedArrayToBST (int[] nums) { return buildTree(nums); } }
取中间点,左右递归