代码随想录训练营Day23:● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇

669. 修剪二叉搜索树

题目链接

https://leetcode.cn/problems/trim-a-binary-search-tree/description/

题目描述

在这里插入图片描述

思路

public TreeNode trimBST(TreeNode root, int low, int high) {
        if(root==null) return null;
        //当前节点的值比区间的最小值小,说明需要删除,但是还要继续考虑当前节点的右子树
        //因为这是一棵二叉搜索树,而右孩子大于根节点的值,所以删除节点的右孩子有可能在区间内,需要继续递归判断
        if(root.val<low){
            return trimBST(root.right,low,high);
        }
        //当前节点的值比区间的最大值大,说明需要删除,但是还要继续考虑当前节点的左子树
        //因为这是一棵二叉搜索树,而左孩子小于根节点的值,所以删除节点的左孩子有可能在区间内,需要继续递归判断
        if(root.val>high){
            return trimBST(root.left,low,high);
        }
        root.left = trimBST(root.left,low,high);
        root.right = trimBST(root.right,low,high);
        return root;
    }

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

题目链接

https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/

题目描述

在这里插入图片描述

思路

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

    //定义一个方法去实现功能
    //取数组中间的数作为二叉搜索平衡树的根节点
    //然后将中间节点的左侧作为左子树,右侧作为右子树
    public TreeNode get(int[] nums,int left,int right){
        if(left>right) return null;
        int mid = (left+right)/2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = get(nums,0,mid-1);
        root.right = get(nums,mid+1,nums.length-1);
        return root;
    }

538.把二叉搜索树转换为累加树

题目链接

https://leetcode.cn/problems/convert-bst-to-greater-tree/description/

题目描述

在这里插入图片描述

思路

pre 和 cur 双指针,不断向上移动进行累加

在这里插入图片描述

class Solution {
    int sum;
    public TreeNode convertBST(TreeNode root) {
        sum = 0;
        convertBST1(root);
        return root;
    }

    public void convertBST1(TreeNode root){
        if(root==null) return;
        convertBST1(root.right);
        sum+= root.val;
        root.val=sum;
        convertBST1(root.left);
    }
}

总结篇

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

goctl-swagger 生成json接口文件

参考&#xff1a; GitHub - dyntrait/goctl-swagger: 通过 api 文件生成 swagger 文档 GitHub - Bluettipower/goctl-swagger 一:编译 执行go install 前一般需要设置环境&#xff0c;不然资源经常会下载不下载 go env -w GOPROXYhttps://goproxy.cn,direct 执行完 go in…

Linux操作系统——常见指令(1)

今天分享一下Linux操作系统常见一些指令。今天介绍 ls pwd cd touch mkdir rmdir rm这几个指令。 ls指令 语法 ls 选项 目录或者文件 功能 对于目录&#xff0c;该命令列出该目录下的所有子目录和文件&#xff0c;对于文件&#xff0c;将列出文件名以及其他信息。 我们常用…

JavaScript基础(超详细)

目录 1.JavaScript概述 2.JavaScript的组成及其基本结构 1.JavaScript的组成 1.ECMAScript ECMAScript是一种由Ecma国际[前向为欧洲计算机制造商协会(European Computer Manufacturers Associaiton)]通过ECMA-262标准化的脚本程序设计语言。其主要描述了JavaScript的语法…

视频素材哪里去找?分享五个高清素材网站

从事短视频以来&#xff0c;关于视频素材哪里去找&#xff1f;好多人都是无从下手&#xff0c;今天我把使用多年的视频素材网站&#xff0c;分享给大家。 无论你短视频你想在抖音还是自媒体或者小红书还是搞笑摄影还是视频素材剪辑&#xff0c;你想要的通通都有&#xff01; 蛙…

交换机/路由器的存储介质-华为

交换机/路由器的存储介质-华为 本文主要介绍网络设备的存储介质组成。 SDRAM&#xff08;同步动态随机存取内存&#xff09; 系统运行内存&#xff0c;相当于电脑的内存&#xff1b; NVRAM&#xff08;Non-Volatile Random Access Memory&#xff0c;非易失性随机访问存储器…

L1-5 猜帽子游戏

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子&#xff0c;有的是黑色的&#xff0c;有的是黄色的。每个人可以看到别人头上的帽子&#xff0c;但是看不到自己的。游戏开始后&#xff0c;每个人可以猜自己头上的帽子是什么颜色&#xff0c;或者可以弃权不猜。如果没有…

网络编程:网络编程基础

一、网络发展 1.TCP/IP两个协议阶段 TCP/IP协议已分成了两个不同的协议&#xff1a; 用来检测网络传输中差错的传输控制协议TCP 专门负责对不同网络进行2互联的互联网协议IP 2.网络体系结构 OSI体系口诀&#xff1a;物链网输会示用 2.1网络体系结构概念 每一层都有自己独…

基于HarmonyOS ArkTS中秋国庆祝福程序、以代码之名,写阖家团圆祝福

中秋、国庆双节将至&#xff0c;作为程序员&#xff0c;以代码之名&#xff0c;表达对于阖家团圆的祝福。本节将演示如何在基于HarmonyOS ArkUI的SwiperController、Image、Swiper等组件来实现节日祝福轮播程序。 规则要求具体要求如下&#xff1a; 1、根据主题&#xff0c;用…

XIAO ESP32S3部署Edge Impulse模型

在上一篇文章中我们介绍了如何使用edge impulse训练一个图片分类模型并导出arduino库文件。在这篇文章中我们将介绍如何在esp32s3中部署这个训练好的图片分类模型。 添加进Arduino库 有两种方法将下载的文件添加进Arduino库。 在Arduino IDE程序中&#xff0c;转到项目选项卡…

Kotlin:为什么创建类不能被继承

一、为什么创建类不能被继承 class或data class 默认情况下&#xff0c;Kotlin 类是最终&#xff08;final&#xff09;的&#xff1a;它们不能被继承。 示例&#xff1a;data class PsersonBean 反编译data class PsersonBean 生成 public final class PsersonBean 示例&…

软件设计师17--磁盘管理

软件设计师17--磁盘管理 考点1&#xff1a;存储管理 - 磁盘管理调度算法磁盘调度 - FCFS磁盘调度 - SSTF例题&#xff1a; 考点1&#xff1a;存储管理 - 磁盘管理 存取时间寻道时间等待时间&#xff0c;训导时间是指磁头移动到磁道所需的时间&#xff1b;等待时间为等待读写的扇…

【Memcached】

memcached 有一个很大的缺陷不能持久化&#xff0c;不能存储在硬盘里 1.NoSQL介绍 NoSQL是对 Not Only SQL、非传统关系型数据库的统称。 NoSQL一词诞生于1998年&#xff0c;2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。 随着互联网时代的到…

脚手架cli快速创建Vue2/Vue3项目

前言&#xff1a; 本文的nodejs版本是14.21.3 第一步 进入cmd窗口 1、全局安装webpack npm install webpack-g&#xff0c; npm install webpack-g 第二步 2、全局安装vue脚手架 npm install -g vue/cli 第三步 3、初始化vue项目 &#xff08;vue脚手架使用webpack模…

【DL经典回顾】激活函数大汇总(五)(Hard Sigmoid Hard Tanh附代码和详细公式)

激活函数大汇总&#xff08;五&#xff09;&#xff08;Hard Sigmoid & Hard Tanh附代码和详细公式&#xff09; 更多激活函数见激活函数大汇总列表 一、引言 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里&#xff0c;激活函数…

ISIS多区域实验简述

为支持大型路由网络&#xff0c;IS-IS在路由域内采用两级分层结构。 IS-IS网络中三种级别的路由设备&#xff1a;将Level-1路由设备部署在区域内&#xff0c;Level-2路由设备部署在区域间&#xff0c;Level-1-2路由设备部署在Level-1和Level-2路由设备的中间。 实验拓扑图&…

【MMDetection3D实战4】利用mmdet3d进行训练

文章目录 1. 介绍1.1 训练流程1.2 测试及验证2. 训练过程演示2.1 准备数据集并处理2.2 加载并修改配置文件2.3 启动训练2.4 测试1. 介绍 1.1 训练流程 MMDetection3D(mmdet3d)和OpenMMlab其他代码库是一样的,在训练的时候需要准备好一个配置文件,在配置文件中定义好所使用的…

力扣经典题:化栈为队

整体思路&#xff1a;入栈然后出栈&#xff0c;操作就和队列相同了 大佬的代码 typedef struct Node {int val;struct Node* next; }Node; Node* newNode(int Val) {Node* n(Node*)malloc(sizeof(Node));n->valVal;n->nextNULL;return n; } void push(Node* Head,int Va…

电脑远程桌面选项变成灰色没办法勾选怎么办?

有些人在使用Windows系统自带的远程桌面工具时&#xff0c;会发现系统属性远程桌面选项卡中勾选启用“允许远程连接到此计算机”。 导致此问题出现的原因主要是由于组策略或者注册表设置错误造成的。 修复远程桌面选项变灰的两种方法&#xff01; 方法一&#xff1a;设置本地组…

第四百零一回

文章目录 知识回顾示例代码经验总结 我们在上一章回中介绍了MethodChannel的使用方法&#xff0c;本章回中将介绍EventChannel的使用方法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 知识回顾 我们在前面章回中介绍了通道的概念和作用&#xff0c;并且提到了通道有不同的…

JS向指定位置添加元素

内容参考来源 splice方法 splice() 方法向/从数组中添加/删除项目&#xff0c;然后返回被删除的项目。 //在数组指定位置插入 var fruits ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(2, 0, "Lemon", "…