一:题目
二:上码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
/**
思路:
1:递归的参数和返回值
我们参数是选择我们的数组跟相对的数组范围
找出中间结点,并为其赋值,遍历其左右结点
2.递归终止条件
当left > right的时候 就是我们的数组遍历完了 则返回 null
3.递归体
4.最终返回值
我们最终还是要返回个根节点。 也就是首层的root;
*/
public TreeNode sortedArrayToBST(int[] nums) {
TreeNode ans = getAns(nums,0,nums.length-1);
return ans;
}
public TreeNode getAns(int[] nums,int l,int r) {
if (l > r) return null;
int mid = (l+r)/2;
TreeNode root = new TreeNode(nums[mid]);
root.left = getAns(nums,l,mid-1);
root.right = getAns(nums,mid+1,r);
return root;
}
}