解题思路:
递归
提交代码:
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length==0) return null;
if(nums.length==1) {
TreeNode node=new TreeNode(nums[0]);
return node;
}
int leftSize=nums.length/2;
TreeNode root=new TreeNode(nums[leftSize]);
int[] left=new int[leftSize];
for(int i=0;i<leftSize;i++)
left[i]=nums[i];
root.left=sortedArrayToBST(left);
int rightSize=nums.length-leftSize-1;
int[] right=new int[rightSize];
for(int i=leftSize+1,j=0;i<nums.length;i++,j++)
right[j]=nums[i];
root.right=sortedArrayToBST(right);
return root;
}
}
运行结果:

本文介绍了一种将有序数组转换为平衡二叉搜索树的递归算法。通过计算数组中点作为根节点,将左侧元素创建为左子树,右侧元素创建为右子树,递归构造整个树结构。
942

被折叠的 条评论
为什么被折叠?



