import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
/**
* NC11 将升序数组转化为平衡二叉搜索树
* @author d3y1
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 程序入口
*
* @param nums int整型一维数组
* @return TreeNode类
*/
public TreeNode sortedArrayToBST (int[] nums) {
return solution(nums);
}
/**
* dfs
* @param nums
* @return
*/
private TreeNode solution(int[] nums){
return arrayToBST(nums, 0, nums.length-1);
}
/**
* 递归
* @param nums
* @param left
* @param right
* @return
*/
private TreeNode arrayToBST(int[] nums, int left, int right){
if(left > right){
return null;
}
int mid = (left+right)/2;
// int mid = (left+right+1)/2;
TreeNode node = new TreeNode(nums[mid]);
node.left = arrayToBST(nums, left, mid-1);
node.right = arrayToBST(nums, mid+1, right);
return node;
}
}