LeetCode每日一题:通过有序数组建立二叉搜索树

问题描述

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

问题分析

通过排序的数组建立二叉排序树,也是找中值的方式,其实int mid = (start + end) / 2;就可以了,但是取模是为了保证能够AC。

代码实现

public TreeNode sortedArrayToBST(int[] num) {
        if (num.length == 0) return null;
        return creatBST(num, 0, num.length - 1);
    }

    private TreeNode creatBST(int[] num, int start, int end) {
        if (start <= end) {
            int mid = (start + end) / 2 + (start + end) % 2;
            TreeNode root = new TreeNode(num[mid]);
            root.left = creatBST(num, start, mid - 1);
            root.right = creatBST(num, mid + 1, end);
            return root;
        }
        return null;
    }

你可能感兴趣的:(LeetCode每日一题:通过有序数组建立二叉搜索树)