leetcode_108

题目来源:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/

思路:
我最开始是想从子节点往根节点做,后来发现,太困难了,好像用不了递归(因为节点命名的原因),所以还是乖乖从根节点往下做。

常规思维:找中点,二分法

代码:
/**

  • Definition for a binary tree node.
  • public class TreeNode {
  • int val;
  • TreeNode left;
  • TreeNode right;
  • TreeNode(int x) { val = x; }
  • }
    */
    class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {

     if(nums.length == 0){
         return null;
     }
    TreeNode head = sorted(nums,0,nums.length-1);
     return head;
    

    }

    public TreeNode sorted(int []nums,int low,int high){

    if(low > high){
        return null;
    }
    int mid = (low+high)/2;
    TreeNode node = new TreeNode(nums[mid]);
    node.left = sorted(nums,low,mid-1);
    node.right = sorted(nums,mid+1,high);
    return node;
    

    }
    }