ps:练习来自力扣
给你一个整数数组 nums
,其中元素已经按 升序 排列,请你将其转换为一棵
平衡
二叉搜索树。
// 定义二叉树节点类
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}class Solution {public TreeNode sortedArrayToBST(int[] nums) {return buildBST(nums, 0, nums.length - 1);}private TreeNode buildBST(int[] nums, int left, int right) {// 如果左边界大于右边界,说明子数组为空,返回 nullif (left > right) {return null;}// 找到中间位置int mid = left + (right - left) / 2;// 创建根节点,值为中间元素的值TreeNode root = new TreeNode(nums[mid]);// 递归构建左子树root.left = buildBST(nums, left, mid - 1);// 递归构建右子树root.right = buildBST(nums, mid + 1, right);return root;}
}