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

☆☆思路: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;
    }
}
原文地址:https://www.cnblogs.com/HuangYJ/p/14189501.html