[leetcode] 108. 将有序数组转换为二叉搜索树
由于数组是有序的,而我们只需要给出一种符合平衡要求的bst即可。所以直接拿数组中间值做根节点,左右分别为左右子树,递归处理即可
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums == null || nums.length == 0) return null;
ArrayList<Integer> a = new ArrayList<>();
for (int num : nums) {
a.add(num);
}
return sortedArrayToBST(a);
}
public TreeNode sortedArrayToBST(List<Integer> nums) {
int index = nums.size() / 2;
TreeNode treeNode = new TreeNode(nums.get(index));
if (index > 0) {
treeNode.left = sortedArrayToBST(nums.subList(0, index));
}
if (nums.size() - index - 1 > 0) {
treeNode.right = sortedArrayToBST(nums.subList(index + 1, nums.size()));
}
return treeNode;
}
}