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

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

由于数组是有序的,而我们只需要给出一种符合平衡要求的bst即可。所以直接拿数组中间值做根节点,左右分别为左右子树,递归处理即可

class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        if (nums == null || nums.length == 0) return null;

        ArrayList<Integer> a = new ArrayList<>();
        for (int num : nums) {
            a.add(num);
        }

        return sortedArrayToBST(a);
    }

    public TreeNode sortedArrayToBST(List<Integer> nums) {
        int index = nums.size() / 2;

        TreeNode treeNode = new TreeNode(nums.get(index));
        if (index > 0) {
            treeNode.left = sortedArrayToBST(nums.subList(0, index));
        }
        if (nums.size() - index - 1 > 0) {
            treeNode.right = sortedArrayToBST(nums.subList(index + 1, nums.size()));
        }
        
        return treeNode;
    }
}
posted @ 2018-11-06 20:39 ACBingo 阅读(...) 评论(...) 编辑 收藏