🌗 108. 将有序数组蜬换䞺二叉搜玢树

吞䜛童子2022幎10月10日
  • algorithm
  • tree
小于 1 分钟

🌗 108. 将有序数组蜬换䞺二叉搜玢树

隟床: 🌗

问题描述

img_18.png


解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        // 思路
        // 从䞭点倄切割保证平衡
        int len = nums.length;
        return mySol(nums, 0, len - 1);
    }

    private TreeNode mySol(int[] nums, int left, int right) {
        // 递園终止条件
        if(left > right) {
            return null;
        }
        if(left == right) {
            return new TreeNode(nums[left]);
        }
        // left < right
        int mid = left + ((right - left) >> 1);
        TreeNode root = new TreeNode(nums[mid]);
        root.left = mySol(nums, left, mid - 1);
        root.right = mySol(nums, mid + 1, right);
        return root;
    }
}

蟓出

img_17.png

䞊次猖蟑于: 2022/10/10 䞋午8:43:48
莡献者: liuxianzhishou