Leetcode 108. Convert Sorted Array to Binary Search Tree

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

題意:給定一個升序的數組,把這個數組轉變成一個高度平衡的二叉搜索樹。

思路:
題目要求高度平衡,所以需要我們把數組的中點位置當做根節點。
由于二叉搜索樹的中序遍歷結果就是升序,且左子樹所有點的值小于根節點,因此中點位置左邊是構成左子樹的區間,右邊是構成右子樹的區間,求左右子樹的過程遞歸執行就可以了。

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

    return helper(0, nums.length - 1, nums);
}

public TreeNode helper(int start, int end, int[] nums) {
    if (start > end) {
        return null;
    }

    int middle = start + (end - start) / 2;
    TreeNode root = new TreeNode(nums[middle]);
    root.left = helper(start, middle - 1, nums);
    root.right = helper(middle + 1, end, nums);

    return root;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容