[LeetCode]Convert Sorted Array to Binary Search Tree

来源:互联网 发布:linux android 模拟器 编辑:程序博客网 时间:2024/04/26 09:17

Question
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.


本题难度Medium。

递归

【复杂度】
时间 O(N) 空间 O(N)

【思路】
题目是想利用正序数组构造出平衡的二叉查找树。实际上只要递归地从中间取值生成root节点,然后两边分别依次生成节点即可,类似于二分查找法。

【代码】

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode sortedArrayToBST(int[] nums) {       return helper(0,nums.length-1,nums);     }    private TreeNode helper(int min,int max,int[] nums){        //base case        if(min>max)            return null;        int mid=(max+min)/2;        TreeNode root=new TreeNode(nums[mid]);        root.left=helper(min,mid-1,nums);        root.right=helper(mid+1,max,nums);        return root;    }}
0 0