【二叉树】|代码随想录算法训练营第18天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、【总结】

刷题神器

代码随想录

往期回顾

>【二叉树】|代码随想录算法训练营第17天|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

题目

669. 修剪二叉搜索树

题目:题目链接
文章:文章讲解
视频:视频讲解

  • 学后思路

    修剪二叉树和删除二叉树有一些相似但是有特殊处理的地方,需要注意处理节点和左右子树

解法1:

class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(root == null) return null;// 注意其右子树有可能有符合区间的值if(root.val < low){TreeNode right = trimBST(root.right, low, high);return right;}// 注意其左子树有可能有符合区间的值if(root.val > high){TreeNode left = trimBST(root.left,low, high);return left;}root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);return root;}
}
  • 题目总结
    • 处理小于或大于区间的时候要考虑其左右子树的合理性,二叉搜索树的左右子树有可能有符合条件的值

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

题目:题目链接
文章:文章讲解
视频:视频讲解

  • 学后思路
    将有序数组构建二叉搜索树,要求是平衡二叉树,平衡二叉树,取中间节点,保证左右子树的高度

解法一:

class Solution {public TreeNode sortedArrayToBST(int[] nums) {if (nums.length == 1)return new TreeNode(nums[0]);int mid = nums.length / 2;TreeNode root = new TreeNode(nums[mid]);if (mid > 0) {root.left = sortedArrayToBST(Arrays.copyOfRange(nums, 0, mid));}if (mid < nums.length - 1) {root.right = sortedArrayToBST(Arrays.copyOfRange(nums, mid + 1, nums.length));}return root;}
}
  • 题目总结
    • 注意结束条件的判断,注意区间取值的判断
    • 注意数组如何copy Arrays.copyOfRange

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

题目:题目链接
文章:文章讲解
视频:视频讲解

  • 学后思路
    有序数组,从后往前遍历,搜索树,递增,左中右,如果想要递加,反过来,右中左,

解法一:

class Solution {int pre = 0;public TreeNode convertBST(TreeNode root) {if(root == null) return root;convertBST(root.right);root.val = root.val + pre;pre = root.val;convertBST(root.left);return root;}
}
  • 题目总结
    • 注意pre指针的作用
    • 注意convert的返回值的意义

二叉树总结

二叉树的理论基础

二叉树的种类、存储方式、遍历方式、定义方式

二叉树的遍历方式

深度优先遍历,前中后序

广度优先遍历,通过队列模拟

求二叉树的属性
二叉树的修改与构造
求二叉搜索树的属性
二叉树的公共祖先
二叉树的修改与构造

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

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

相关文章

架构师的36项修炼 学习笔记

架构师的36项修炼 学习笔记 分布式缓存 缓存特点 1.技术简单 2.性能提升明显 3.应用场景多 缓存数据存储 hash表 缓存的关键指标 命中率 缓存失效方式 超时失效 LLT 实时清除 代理缓存 反向代理缓存 多层反向代理缓存 内容分发网络CDN 通读缓存 包括代理缓存…

洛谷P1832 A+B Problem(再升级)题解

思路 先筛出范围内的所有质数&#xff08;埃式筛和欧拉筛都可以&#xff09;&#xff0c;再进行dp,要将dp[0]初始化为1. 状态转移方程 dp[j]dp[j-prime[i]]; 代码 #include<bits/stdc.h> #define endl \n; using namespace std; int n; const int N1e410; bool P[N]…

AI作图接口要怎么调用呢?

一、什么是AI作图&#xff1f; 基于AI大模型的深度学习算法和大规模的图像数据训练&#xff0c;输入图片和关键词&#xff0c;可生成独特及富有创意的山水风格图片。 二、AI作图使用场景有哪些呢&#xff1f; 1.广告与营销&#xff1a; 为产品制作吸引人的宣传海报、广告图片…

git拉完代码总是自动创建一个新的节点

git拉完代码&#xff0c;总是自动生成弹出这个信息 然后还会在git上面留下一个节点&#xff0c;这个节点没啥用&#xff0c;显示着感觉有点碍事。 而且后续的git push 之后&#xff0c;会覆盖掉自己的git commit 的提示&#xff0c;其他人cr代码的时候看到的是 解决方法&#…

vite + postcss 安装配置

安装 npm install postcss-pxtorem --save-dev配置postcss.config.js 新建 postcss.config.js export default {plugins: {postcss-pxtorem: {rootValue: 16, // 根元素大小&#xff0c;用于转换rem的基准值unitPrecision: 5, // rem的小数位数propList: [*], // 需要转换的…

A股两市继续低开,缩量震荡前行!

今天的A股&#xff0c;让人心情极度炸裂&#xff0c;你们知道是为什么吗&#xff1f;盘面上出现2个重要信号&#xff0c;一起来看看&#xff1a; 1、今天两市低开&#xff0c;让人心情极度炸裂。 2、盘面上出现2个重要信号&#xff1a;一是为了迎接今日上证权益指数问世&#x…

LeetCode刷题笔记第682题:棒球比赛

LeetCode刷题笔记第682题&#xff1a;棒球比赛 题目&#xff1a; 想法&#xff1a; 遍历输入的列表&#xff0c;按照规则将分数和操作依次进行&#xff0c;存储在新建的列表中&#xff0c;最终输出列表中的元素和&#xff0c;代码如下&#xff1a; class Solution:def calPo…

妈吖,看过这个大厂的oracle主键自增,我的信心暴增!信创,国产数据库也能行。

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” 1.数据库oracle自增主键字段思维导图 在Oracle数据库中&#xff0c;可以通过创建序列&#xff08;SEQUENCE&#xff09;来实现自增功能。但也可以不在数据库中实现&#xff0c;而是通过程…

【Stable Diffusion】(基础篇六)—— embedding

embedding 本系列博客笔记主要参考B站nenly同学的视频教程&#xff0c;传送门&#xff1a;B站第一套系统的AI绘画课&#xff01;零基础学会Stable Diffusion&#xff0c;这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 除了大模型和VAE之外…

RewardBench:Evaluating Reward Models for Language Modeling

Leaderboard&#xff1a; https://hf.co/spaces/allenai/reward-bench Code&#xff1a; https://github.com/allenai/reward-bench Dataset&#xff1a; https://hf.co/datasets/allenai/reward-bench 在人类偏好的强化学习&#xff08;RLHF&#xff09;过程中&#xff0c;奖励…

shell命令行查询文件中的内容

在 Linux shell 中查找文件内容可以使用多种命令。以下是几种常用的命令及其用法&#xff1a; 1. grep 命令 grep 命令是最常用的文本搜索工具之一&#xff0c;它可以在文件中搜索指定的字符串并输出包含该字符串的行。 基本用法 grep "pattern" filename • patte…

Centos7重装系统保留数据安装方式记录

一、选择手动配置分区 二、选择/分区以后&#xff0c;输入挂载点/&#xff0c;选择标准分区&#xff0c;勾选重新格式化&#xff0c;单击更新设置。这样重装的时候&#xff0c;就格式化/分区内的数据。 三、选择swap分区&#xff0c;勾选重新格式化&#xff0c;单击更新设置…

【数据分享】2024年省市县行政区划数据(最新版本/带审图号/官方发布/免费获取/Shp格式)

省份\地级市\区县这三个级别的行政边界矢量&#xff08;shp格式&#xff09;数据是我们在各项研究中最常用的数据。在我们发表学术论文的时候&#xff0c;一旦涉及到行政边界&#xff0c;在期刊的投稿指南中都明确要求必须使用自然资源地图技术审查中心发布的标准地图底图&…

基于JSP的在线教育资源管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;IDEA/Eclipse、Navicat 系统展示 首页 管理员界面 学生界面 教师界面 摘…

【React】详解 Redux 状态管理

文章目录 一、Redux 的基本概念1. 什么是 Redux&#xff1f;2. Redux 的三大原则 二、Redux 的核心组件1. Store2. Action3. Reducer 三、Redux 的使用流程1. 安装 Redux 及其 React 绑定2. 创建 Action3. 创建 Reducer4. 创建 Store5. 在 React 应用中使用 Store6. 连接 React…

算法:空间复杂度

空间复杂度 定义计算方法常见的空间复杂度示例分析示例1&#xff1a;常数空间复杂度&#xff08;O(1)&#xff09;示例2&#xff1a;线性空间复杂度&#xff08;O(n)&#xff09;示例3&#xff1a;平方空间复杂度&#xff08;O(n^2)&#xff09;示例4&#xff1a;递归调用的空间…

在当前的数字化时代,Cobol 语言如何与新兴技术(如云计算、大数据、人工智能)进行融合和交互?

Cobol语言作为一种古老的编程语言&#xff0c;与新兴技术的融合和交互需要一些额外的工作和技术支持。以下是一些将Cobol与新兴技术结合的方法&#xff1a; 云计算&#xff1a;Cobol程序可以迁移到云平台上运行&#xff0c;通过云提供的弹性和可扩展性&#xff0c;为Cobol应用程…

Docker安装oracle19c

文章目录 Docker安装oracle19c1. 拉取镜像2. 创建目录并赋权3. 构建容器并启动4. 查看日志5. 登录docker容器里面6. 登录sqlplus 创建PDB用户7. 查看show pdbs7. 切换数据库8. 创建用户9. 授权10. 使用navicat连接11. 参考和感谢 Docker安装oracle19c 1. 拉取镜像 docker pul…

深入分析 Android ContentProvider (八)

文章目录 深入分析 Android ContentProvider (八)ContentProvider 高级使用及最佳实践案例分析&#xff08;续&#xff09;1. 深入了解跨应用数据共享示例&#xff1a;跨应用数据共享的完整实现1. 定义权限2. 定义 ContentProvider3. ContentProvider 实现 2. 实践案例&#xf…

JAVA默写单词小程序

编写一个记单词和默写单词两个功能的小程序 package com.lu.word;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString;Data AllArgsConstructor NoArgsConstructor ToString public class A {private String k;p…