【简单】通过有序数组生成平衡搜索二叉树-Java

博客提及分享人工智能教程,强调零基础、易懂风趣,还指出人工智能时代即将来临。不过核心围绕通过有序数组生成平衡搜索二叉树展开,以Java实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科… 继续阅读 前言https://www.captainai.net/troubleshooter

package live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree;

import live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree.BinaryTreePrinter2.Node;

import static live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree.BinaryTreePrinter2.print;

/**
 * 通过有序数组生成平衡搜索二叉树
 *
 * 【题目】
 * 给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一棵平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与
 * sortArr一致。
 *
 * 【难度】
 * 简单
 *
 * 【解答】
 * 本题的递归过程比较简单,用有序数组最中间的数生成搜索二叉树的头节点,然后用这个数左边的数生成左子树,用右边的数生成右子
 * 树即可。
 * 全部过程请参看如下代码中的generateTree方法。
 *
 * @author Created by LiveEveryDay
 */

public class GenerateBalancedBSTBySortedArray {

    public static Node generateTree(int[] sortedArr) {
        if (sortedArr == null) {
            return null;
        }
        return generate(sortedArr, 0, sortedArr.length - 1);
    }

    private static Node generate(int[] sortedArr, int start, int end) {
        if (start > end) {
            return null;
        }
        int mid = (start + end) >> 1;
        Node root = new Node(sortedArr[mid]);
        root.left = generate(sortedArr, start, mid - 1);
        root.right = generate(sortedArr, mid + 1, end);
        return root;
    }

    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5, 6, 7, 8};
        Node root = generateTree(a);
        print(root);
    }

}

// ------ Output ------
/*
            4
         /     \
      2           6
    /   \       /   \
  1       3   5       7
                       \
                        8
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值