20200703:将有序数组转换为二叉搜索树(leetcode108)

    技术2024-10-25  20

    将有序数组转换为二叉搜索树

    题目思路与算法代码实现复杂度分析

    题目

    将有序数组转换为二叉搜索树

    思路与算法

    乍一看很简单,实际也很简单,今天的动态规划没做出来,就刷每日一题好了。保证平衡的最简单方法就是从每次都取最中间的数作为当前树或者子树的root节点。代码也没啥太好解释的,发现两周前做过这题,再贴一下。

    代码实现

    /** * 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 == null || nums.length == 0) return null; else return getTree(nums,0,nums.length-1); } public static TreeNode getTree(int[] nums,int left,int right){ while(left<=right){ int mid = (left+right)/2; TreeNode tn = new TreeNode(nums[mid]); tn.left = getTree(nums,left,mid-1); tn.right = getTree(nums,mid+1,right); return tn; } return null; } }

    复杂度分析

    将数组遍历了一遍,因此时间复杂度O(N)。

    Processed: 0.011, SQL: 9