给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。
需求
- 整数数组转为平衡二叉树
代码
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
//因为原函数输入的参数是数组,所以需要定义一个函数来构建树
return buildTree(nums,0,nums.length - 1);
}
private TreeNode buildTree(int[] nums,int left,int right) {
// 终止条件
if (left > right) return null;
//防止溢出,数学思想,等价于 (left + right) / 2
int mid = left + (right - left) / 2;
// 中点创建根节点
TreeNode root = new TreeNode(nums[mid]);
//递归创建左右子树
root.left = buildTree(nums, left, mid-1);
root.right = buildTree(nums, mid+1, right);
return root;
}
}
