个人技术分享

题目:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 

平衡二叉搜索树。

 给定一个有序的整数数组,我们需要构建一棵平衡的二叉搜索树。平衡二叉树是指任意一个节点的左右子树的高度差不超过1。

由于给定的数组是有序的,可以利用这个特性来构建二叉搜索树。可以选择数组中间的元素作为根节点,然后递归地构建左子树和右子树。

 

public class no_108 {
    public static void main(String[] args) {
        int[] arr = {-10, -3, 0, 5, 9};
        TreeNode treeNode = sortedArrayToBST(arr);

    }

    public static TreeNode sortedArrayToBST(int[] nums) {
        return buildTree(nums, 0, nums.length - 1);
    }

    public static TreeNode buildTree(int[] nums, int left, int right) {
        if (left > right) return null;
        int mid = left + (right - left) / 2;

        TreeNode root = new TreeNode(nums[mid]);

        root.left = buildTree(nums, left, mid - 1);
        root.right = buildTree(nums, mid + 1, right);

        return root;
    }
}

利用有序数组的特点,将树构建出来。