题目连接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/数组
题目大意:将一个升序数组转换成平衡二叉排序树。ide
法一(借鉴):一看到平衡二叉,就懵了,觉得是用平衡转换来作,直接看了题解,发现并非,用二分就能够作,毕竟还要知足排序树的特色,代码以下(耗时1ms):spa
1 public TreeNode sortedArrayToBST(int[] nums) { 2 return dfs(nums, 0, nums.length - 1); 3 } 4 5 public static TreeNode dfs(int[] nums, int left, int right) { 6 if(left > right) { 7 return null; 8 } 9 int mid = (left + right) / 2; 10 TreeNode root = new TreeNode(nums[mid]); 11 root.left = dfs(nums, left, mid - 1); 12 root.right = dfs(nums, mid + 1, right); 13 return root; 14 }
法二(借鉴):非递归解,虽然以为有点画蛇添足,https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/discuss/code