【二叉搜索树】将二叉搜索树变平衡-力扣 1382 题

2023-09-19 10:52:36

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。

如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的

image-20230919105123044

输入:root = [1,null,2,null,3,null,4,null,null]
输出:[2,1,3,null,null,null,4]
解释:这不是唯一的正确答案,[3,1,4,null,2,null,null] 也是一个可行的构造方案。
public class E09Leetcode1382 {
    List<Integer> temp = new ArrayList<>();

    /**
     * 前序遍历
     *
     * @param root
     */
    private void travesal(TreeNode root) {
        if (root == null) {
            return;
        }
        travesal(root.left);
        temp.add(root.val);//存储中序遍历的结果
        travesal(root.right);
    }

    private TreeNode toTree(int left, int right) {
        if (left > right) {
            return null;
        }
        //获取中间index
        int mid = (left + right) >> 1;
        //中间index的值就是根节点
        TreeNode node = new TreeNode(temp.get(mid));
        node.left = toTree(left, mid - 1);
        node.right = toTree(mid + 1, right);
        return node;
    }

    public TreeNode balanceBST(TreeNode root) {
        travesal(root);
        return toTree(0, temp.size() - 1);
    }
}

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

更多推荐

轻量云服务器租用好在哪

从技术上讲,轻量级云服务器是特化了某一配置的高性价比云服务器的结合。下面,我们将了解轻量级云服务器有什么优势,使用物理服务器搭建网站,您需要租用整个服务器,这成本会变得非常昂贵。这对于一些比较简单的使用需求而言,例如搭建一个单页网站或者一个做个代理的话其实用整台服务器不仅性能溢出而且价格很贵对于初学者来说,使用轻量级云

灾备系统中虚拟机的有代理备份与无代理备份之间的差异

虚拟机的有代理备份是在虚拟机内部安装备份代理程序,然后把虚拟机当作物理机一样来进行备份任务。借助虚拟机系统中内置的程序来进行备份的,就像在正常系统中备份那样,借助备份和还原(Windows7)功能对系统进行备份。但是这种方法操作起来比较麻烦,而且也没有办法进行批量化操作,比如有大量的虚拟机,都需要备份它们的数据,那么就

前后台分离开发 YAPI平台 前端工程化之Vue-cli

目录YAPI介绍前端工程化之Vue-cli前端工程化简介前端工程化入门——Vue-cli环境准备Vue项目简介创建Vue项目vue项目目录结构介绍vue项目运行方法Vue项目开发流程前后台混合开发这种开发模式有如下缺点:沟通成本高:后台人员发现前端有问题,需要找前端人员修改,前端修改成功,再交给后台人员使用分工不明确:

nginx反向代理vue项目

文章目录前言一、创建站点1.添加站点2.添加ssl证书二、反向代理vue项目1.添加反向代理2.更改vue项目配置3.修改反向代理配置前言项目描述:前端vue项目、后端Java项目、首页WordPress项目客户要求:使用宝塔进行部署需求描述:客户只有一个SSL单域名DV证书要求首页部署wordpress项目作为官网,

大话数据结构 2 算法

算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作算法的五个基本特性:输入、输出、有穷性、确定性、可行性1.输入输出:算法具有0个或多个输入,算法至少有1个或多个输出。2.有穷性:指算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成

JUC相关面试题

👏作者简介:大家好,我是爱发博客的嗯哼,爱好Java的小菜鸟🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦📝社区论坛:希望大家能加入社区共同进步🧑‍💼个人博客:智慧笔记📕系列专栏:面试宝典本文引自黑马程序员Java面试宝典JUC基础薄弱的可以先看JUC详解文章目录面试官:聊一下并行和并发有什么

干货:数据仓库基础知识(全)

1、什么是数据仓库?权威定义:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。1)数据仓库是用于支持决策、面向分析型数据处理;2)对多个异构的数据源有效集成,集成后按照主题进行重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。面对大数据的多样性,在存储和处理这些大数据

【算法】单调栈

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kuan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kaf

JAVA开发技术能力和学历哪个重要?

Java开发技术能力和学历都是Java开发人员必须具备的基本条件,二者之间没有谁更加重要的绝对答案。不同的人在不同的时期,所处的不同环境下会给出不同的答案。下面从多个角度进行讨论,探究Java开发技术能力和学历哪个更重要。1、招聘角度从企业的招聘需求来看,技术能力在某些情况下更为重要。随着科技的不断发展,对于一些前沿技

8位微控制器上的轻量级SM2加密算法实现:C语言详细指南与完整代码解析

引言在当今的数字化世界中,安全性是每个系统的核心。无论是智能家居、医疗设备还是工业自动化,每个设备都需要确保数据的安全性和完整性。对于许多应用来说,使用高级的微控制器或处理器可能是不切实际的,因为它们可能会增加成本、功耗和尺寸。这就是为什么8位微控制器仍然在许多应用中占据着重要的地位。但是,8位微控制器的计算能力有限,

天翎知识管理系统:支持多种文件类型,整合各类知识资源

编者按:知识管理系统支持多种格式可以更好地适应不同的业务需求和行业规范,同时也可以避免文件格式不兼容带来的麻烦。本文将介绍天翎知识管理系统的文件类型支持,包括文档格式的在线预览及在线编辑,以便用户可以更全面地了解天翎系统。知识管理系统文件类型支持在线预览天翎知识管理系统支持多种文档格式在线预览,可以让用户在不下载文档的

热文推荐