https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/
根据有序数组,创建平衡的二叉搜索树,也就相当于根据中序遍历还原原来的二叉树,只有一个遍历,并不能完全确定二叉树的结构。 以下只是可以参考的解决方案,每次取选取区间的中点作为子树的根节点,划分为两个区间,每个区间再以中点分割,循环往复,知道只剩一个节点,这个时候就不能再次分割了。
class Solution { public TreeNode sortedArrayToBST(int[] nums) { return createTree(nums, 0, nums.length - 1); } private TreeNode createTree (int[] nums, int left, int right) { if (left > right) { return null; } int mid = (left + right) / 2; TreeNode root = new TreeNode(nums[mid]); root.left = createTree(nums, left, mid - 1); root.right = createTree(nums, mid + 1, right); return root; } }