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

题目链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/submissions/

解题思路:

这个题有点类似二分查找,根节点在正中间,左子树的根节点在左边一半数组的正中间,右子树的根节点在右边一半数组的正中间;于是可以递归解决:先确定根节点,然后构造左子树,然后构造右子树, 结束条件类似二分查找(low > high)。

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     public TreeNode sortedArrayToBST(int[] nums) {
12         if(nums==null)
13             return null;
14         return get(nums,0,nums.length-1);
15     }
16     public TreeNode get(int []nums,int l,int r)
17     {
18         if(l<=r)
19         {
20             int mid = (l+r)/2;
21             TreeNode root = new TreeNode(nums[mid]);
22             root.left =get(nums,l,mid-1);
23             root.right = get(nums,mid+1,r);
24             return root;
25         }
26         else
27         {
28             return null;
29         }
30     }
31 }
原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/11228481.html