自学内容网 自学内容网

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

在这里插入图片描述

算法思想及代码解析:

这段代码的目的是将一个有序数组转换为 高度平衡的二叉搜索树(Balanced Binary Search Tree, BST)。以下是算法的详细解释:


1. 什么是高度平衡的二叉搜索树?

  • 二叉搜索树:对于树中的每个节点,左子树所有节点的值小于根节点,右子树所有节点的值大于根节点。
  • 高度平衡:指树中每个节点的左右子树高度差不超过1。
  • 为了满足“高度平衡”,我们在构造树时尽量选择中间值作为根节点,使左右子树的节点数量尽可能接近。

2. 算法核心思路

  • 将数组的中间值作为树的根节点。
  • 数组左半部分用来构造左子树,右半部分用来构造右子树。
  • 递归地对左右子数组重复这个过程,直到子数组为空为止。

java 代码实现

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

    private TreeNode helper(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 = helper(nums, left, mid - 1);
        root.right = helper(nums, mid + 1, right);
        return root;
    }
}

原文地址:https://blog.csdn.net/coldasice342/article/details/144069118

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!