23_108. 将有序数组转化为二叉搜索树
题目描述:
解题思路:
二叉搜索树,其中序遍历是一个有序数组,但是如果只是利用中序遍历,并不能保证高度平衡。其实提到高度平衡,就可以想着使用递归的方法来解决。
高度平衡的二叉搜索树,在每一个节点都是高度平衡的,根据定义知道高度平衡的二叉树,左右子树的高度相差小于等于1,如果对于每个节点都选择有序数组中间的值,就可以使得左右子树的高度相差小于等于1。
递归代码
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return helper(nums, 0, nums.length - 1);
}
public TreeNode helper(int[] nums, int l, int r) {
if (l > r) {
return null;
}
int mid = (l + r) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = helper(nums, l, mid - 1);
root.right = helper(nums, mid + 1, r);
return root;
}
}
滴水穿石、燕子衔泥,点点滴滴都是添补