思路:
分治法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int []nums;
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length==0)
{
return null;
}
this.nums=nums;
int middle=(nums.length-1)/2;
TreeNode root=new TreeNode(nums[middle]);
help(root, 0, middle-1,true);
help(root,middle+1,nums.length-1,false);
return root;
}
public void help(TreeNode root,int left,int right,boolean isLeft)
{
if(right<left)
{
return;
}
int middle=(left+right)/2;
if(isLeft)
{
root.left=new TreeNode(nums[middle]);
help(root.left,left,middle-1,true);
help(root.left,middle+1,right,false);
}
else
{
root.right=new TreeNode(nums[middle]);
help(root.right,left,middle-1,true);
help(root.right,middle+1,right,false);
}
}
}
本文介绍了如何使用分治法将整数数组转换为平衡二叉搜索树,并详细阐述了算法实现过程。
1346

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



