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

news2024/11/23 23:38:17

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文解析 Python 读取配置文件的常用方法!

在程序运行使用当中&#xff0c;尤其是框架设计中&#xff0c;配置文件是必不可少的&#xff0c;配置文件的存在能够放置参数或者选项设置&#xff0c;使得程序更加灵活可用&#xff0c;下面就来介绍 Python 读取配置文件的常用方法。 常用的配置文件种类有很多&#xff0c;甚至…

【Nginx27】Nginx学习:代理模块(一)基本配置与概念

Nginx学习&#xff1a;代理模块&#xff08;一&#xff09;基本配置与概念 来了来了它来了。要说 Nginx 最早最出名的名头是什么&#xff1f;相信不少老码农马上就会想到&#xff0c;最开始&#xff0c;Nginx 的名头就是一款性能最高的 反向代理 服务器。现在其实也是&#xff…

Harmony 开始支持 Flutter ,聊聊 Harmony 和 Flutter 之间的因果

相信大家都已经听说过&#xff0c;明年的 Harmony Next 版本将正式剥离 AOSP 支持 &#xff0c;基于这个话题我已经做过一期问题汇总 &#xff0c;当时在现有 App 如何兼容 Harmony Next 问题上提到过&#xff1a; 华为内部也主导适配目前的主流跨平台方案&#xff0c;主动提供…

听GPT 讲Istio源代码--pilot(7)

File: istio/pilot/pkg/model/log.go 在Istio项目中&#xff0c;istio/pilot/pkg/model/log.go文件的作用是定义了Istio Pilot的日志记录功能。 该文件中定义了一个名为log的全局日志记录器&#xff0c;并且还定义了一些与日志记录相关的变量&#xff0c;如verbose、verboseCou…

Linux高性能服务器编程 学习笔记 第三章 TCP协议详解

与IP协议相比&#xff0c;TCP协议更靠近应用层&#xff0c;因此在应用程序中有更强的可操作性。一些重要的socket选项都和TCP协议相关。 本章从以下方面讨论TCP协议&#xff1a; 1.TCP头部信息。TCP头部信息出现在每个TCP报文段中&#xff0c;用于指定通信的源端端口号、目的端…

气传导与入耳式传导区别?气传导耳机好用吗?

​入耳式耳机隔音效果好&#xff0c;但佩戴舒适性差&#xff0c;音质更偏向沉浸式。相比传统入耳式耳机&#xff0c;气传导耳机可以提供开放的听觉体验&#xff0c;音质更加自然真实&#xff0c;同时避免了长时间佩戴耳机可能会带来的不适感。以下是我总结了最好用的几款气传导…

使用RTMDet模型训练DOTA_v1.0教程

1. 环境配置 需要注意&#xff0c;如果之前安装过mmrotate&#xff0c;那么这个mmyolo请单独创建一个虚拟环境&#xff0c;因为mmyolo和mmrotate的最新版本不兼容。 1.创建环境 conda create -n mmyolo python3.82.安装依赖 # 进入mmyolo环境中 conda activate mmyolo# 安装…

Oracle两个日期都存在返回最小/最大的,如果只存在一个就返回存在的日期

Oracle函数 Oracle两个字段日期都存在返回最小的&#xff0c;如果只存在一个就返回存在的日期. 函数说明LEAST(value1, value2, …)最小值GREATEST(value1, value2, …)最大值COALESCE(value1, value2, …)返回第一个不是空值的参数

计算机网络与技术——物理层

&#x1f60a;计算机网络与技术——物理层 &#x1f47b;物理层的基本概念&#x1f47b;数据通信基础知识&#x1f6a2;数据通信系统的模型&#x1f6a2;信道的基本概念&#x1f6a2;信道的极限容量 &#x1f47b;物理层下面的传输媒体&#x1f50a;导引型传输媒体&#x1f50a…

006-第一代光电小工具(二)

第一代光电小工具(二) 文章目录 第一代光电小工具(二)项目介绍串口QCustomPlot 部分开启OpenGl更新曲线 总结一下 关键字&#xff1a; Qt、 Qml、 QCustomPlot、 串口、 QSerialPort 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;…

Ubuntu系统下载及安装教程

史上最全最新Ubuntu安装教程&#xff08;图文&#xff09; - 知乎 (说明&#xff1a;本教程介绍的是安装DeskTop版的系统) 1.官网下载镜像 官方网址: https://ubuntu.com/#download进入官网后会有最新版本的镜像下载地址&#xff0c;如果需要下载最新版本&#xff0c;直接点…

2023-09-18 LeetCode每日一题(打家劫舍 III)

2023-09-18每日一题 一、题目编号 337. 打家劫舍 III二、题目链接 点击跳转到题目位置 三、题目描述 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦…

【C++】构造函数初始化列表 ③ ( 构造函数 的 初始化列表 中 为 const 成员变量初始化 )

文章目录 一、构造函数 的 初始化列表 中 为 const 成员变量初始化1、初始化 const 常量成员2、错误代码示例 - 没有初始化常量成员3、正确代码示例 - 在初始化列表中初始化常量成员4、完整代码示例 构造函数初始化列表 总结 : 初始化列表 可以 为 类的 成员变量 提供初始值 ;…

TCP IP网络编程(六) 基于UDP的服务器端、客户端

文章目录 一、理解UDP1.UDP套接字的特点2.UDP内部工作原理3.UDP的高效使用 二、实现基于UDP的服务器端、客户端1.UDP中的服务端和客户端没有连接2.UDP服务器端和客户端均只需要一个套接字3.基于UDP的数据I/O函数4.基于UDP的回声服务器端、客户端5.UDP客户端套接字的地址分配 三…

【Java】java: 无效的标记: -parameters

问题描述 maven項目&#xff0c;原来使用jdk8的版本&#xff0c;现在改成jdk7的版本&#xff0c;结果报错&#xff1a; java: 无效的标记: -parameters 原因分析 解决方法 删掉下图所示的-parameters参数 参考文章 https://www.cnblogs.com/lovezzb/p/10072854.html

英伟达 nvidia 官方code llama在线使用

新一代编程语言模型Code Llama面世&#xff1a;重新定义编程的未来 随着人工智能和机器学习技术的迅速发展&#xff0c;我们现在迎来了一款革命性的大型编程语言模型——Code Llama。该模型是基于Llama 2研发的&#xff0c;为开放模型中的佼佼者&#xff0c;其性能达到了行业领…

零基础学前端(四)1. 重点讲解 CSS:盒子模型、样式选择器

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码&#xff0c;以身体感悟带动头脑去理解新知识 3. 初学者切忌&#xff0c;不要眼花缭乱&#xff0c;不要四处找其它文档&#xff0c;要坚定一个教授者的方式&#xff0c;将其学通透&#xff…

基于GBDT+Tkinter+穷举法按排队时间预测最优路径的智能导航推荐系统——机器学习算法应用(含Python工程源码)+数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境Scikit-learnt 模块实现1. 数据预处理2. 客流预测1&#xff09;创建并保存模型2&#xff09;损失函数3&#xff09;测试集测试4&#xff09;自定义特征并预测 3. 百度地图API调用1&#xff09;申请密…

许少辉博士后挂站联谊《乡村振兴战略下传统村落文化旅游设计》河北站——2023学生开学季辉少许

许少辉博士后挂站联谊《乡村振兴战略下传统村落文化旅游设计》河北站——2023学生开学季辉少许

【大规模 MIMO 检测】基于ADMM的大型MU-MIMO无穷大范数检测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…