题目:简单题
给你一个整数数组 其中元素已经按升序排列,请你将其转换为一棵 高度平衡 二叉搜索树。
高度平衡二叉树是一棵满足每个节点的左右两个子树的高度差的绝对值不超过 1 的二叉树。
思路:
怎么让二叉树平衡是这道题的关键问题,所以每次取数组的中心为根节点,之后将数组左侧右侧进行相同操作,递归构造即可。
代码:
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return dp(nums, 0, nums.length - 1);
}
public TreeNode dp(int[] nums, int left, int right) {
if (left > right) {
return null;
}
int mid = (left + right) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = dp(nums, left, mid - 1);
root.right = dp(nums, mid + 1, right);
return root;
}
}