題目連接: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