☆☆思路:BST的中序遍历时升序的,因此本题等同于根据中序遍历的序列恢复二叉搜索树。
可以选择中间数字作为二叉搜索树的根节点,这样分给左右子树的数字个数相同或只相差 1,可以使得树保持平衡。
class Solution { public TreeNode sortedArrayToBST(int[] nums) { return dfs(nums, 0, nums.length - 1); } private TreeNode dfs(int[] nums, int left, int right) { if (left > right) { return null; } int mid = left + ((right - left) >> 1); TreeNode root = new TreeNode(nums[mid]); root.left = dfs(nums, left, mid - 1); root.right = dfs(nums, mid + 1, right); return root; } }