【算法刷题 day23】Leetcode: 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树

文档链接:[代码随想录]
题目链接: 669. 修剪二叉搜索树

题目:
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。
所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if(root == NULL) return NULL;//return root;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.将有序数组转换为二叉搜索树

文档链接:[代码随想录]
题目链接:108.将有序数组转换为二叉搜索树

题目:
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {return traversal(nums,0,nums.size() -1);}TreeNode* traversal(vector<int>& nums,int left,int right){if (left > right) return nullptr;int mid = left + ((right - left) / 2);int val = nums[mid];TreeNode* root = new TreeNode(val);root->left = traversal(nums, left, mid - 1);root->right = traversal(nums, mid + 1, right);return root;}
};

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

文档链接:[代码随想录]
题目链接:538.把二叉搜索树转换为累加树

题目:
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。

class Solution {
public:TreeNode* convertBST(TreeNode* root) {pre = 0;traversal(root);return root;}
private:int pre = 0;    void traversal(TreeNode* root){if(root == NULL)return ;traversal(root->right);root->val += pre;pre = root -> val;traversal(root->left);}
};

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

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

相关文章

开发有哪些常见陷阱?

引言 在当今数字化时代&#xff0c;软件开发已成为推动科技进步和商业发展的重要引擎。然而&#xff0c;软件开发并非一帆风顺&#xff0c;其中蕴藏着许多陷阱和挑战。如何避免这些陷阱&#xff0c;提高软件开发的效率和质量&#xff0c;成为开发者们面临的重要问题 本文将深…

【linux深入剖析】动态库的使用(续) | 动静态库的链接

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 回顾1. 打包库的使用2. 动…

智能体Agent是AI时代普通人可参与的第一个红利机会

自从生成式 AI 兴起&#xff0c;掌握 prompt 能让 AI 工具更好为我们服务。而智能体的出现&#xff0c;让 AI 的使用门槛更是不断降低——都不用写 Prompt 了&#xff0c;直接用智能体就行了。 智能体Agent是AI时代普通人可参与的第一个红利机会© 由 ZAKER科技 提供 前几…

数据中心如何选择万兆光模块?

在数据中心的网络架构中&#xff0c;选择适合的万兆光模块是至关重要的。在选择过程中&#xff0c;万兆多模光模块、万兆电口模块和10G DAC是三种常见的方案。万兆光模块的选择直接关系到数据传输的速度、稳定性和成本效益。在选择过程中&#xff0c;我们可以从延迟、功耗、应用…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称&#xff1a;Java MessageService 中文&#xff1a;Java 消息服务。 JMS 是 Java 的一套 API 标准&#xff0c;最初的目的是为了使应用程序能够访问现有的 MOM 系 统&#xff08;MOM 是 MessageOriented Middleware 的英文缩写&am…

4.9总结(Stream流,方法引用概述 || 乘法逆元,组合数)

Stream流 基本概念&#xff1a;以更简便的方式操作集合数据的形式&#xff1b; Steam流的操作步骤&#xff1a; 获取Stream流 中间方法&#xff1a;去重&#xff0c;跳过&#xff0c;获取&#xff0c; 过滤&#xff0c; 合并流&#xff0c;转换类型&#xff1b; 终结方法&…

2024-4-12-实战:商城首页(下)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业小结 作业 .bg-backward {width: 60px; height: 60px;background: url(..…

SpringMVC--02--上下文工具类(RequestContextHolder)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 RequestContextHolder背景1.RequestContextHolder的使用2.request和response怎么和当前请求挂钩?3.request和response等是什么时候设置进去的? 案例应用---用户信…

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名 地址&#xff1a;https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性SPARQLCypherGremlinPGQLG-CORE图模式匹配查询语法CGPCGPCGP(无可选)1CGPCGP语义子图同态、包 2无重复边、包 2子…

C语言之九九乘法表||素数||最小公倍数

一、九九乘法表 &#xff08;1&#xff09;思路 1、九九乘法表中存在三个变量&#xff0c;以 x1 ; x2 ; y 为例&#xff08;这里也可以使用两个变量&#xff0c;用x1和x2来表示y&#xff0c;方法一样&#xff09; 2、想好了变量之后&#xff0c;我们要想怎样将他实现呢&#x…

智能售货机:引领便捷生活

智能售货机&#xff1a;引领便捷生活 在这个科技迅速进步的时代&#xff0c;便捷已成为生活的必需。智能售货机作为技术与便利完美结合的产物&#xff0c;正逐渐改变我们的购物方式&#xff0c;为都市生活增添新的活力。 智能售货机的主要优势是它的极致便利性。不论是在地铁…

变量---

一、变量概述 1、什么是变量 变量是用于存放数据的容器。通过变量名 获取数据&#xff0c;甚至数据可以修改。 变量的本质&#xff1a;变量是程序在内存中申请的一块用来存放数据的空间。 二、变量的使用 变量在使用时分两步&#xff1a;1、声明变量 2、赋值 三、变量语法…

【c 语言】结构体的定义格式及变量初始化

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

IDEA版本

IDEA版本 IDEA版本

深入理解机器学习:用Python构建您的第一个预测模型

在这个数据驱动的时代&#xff0c;机器学习技术正在成为各行各业的变革力量。无论是金融、医疗、零售还是教育&#xff0c;机器学习都在为业务决策提供支持&#xff0c;优化用户体验&#xff0c;并创造出全新的服务方式。今天&#xff0c;我们将一起走进机器学习的世界&#xf…

Vue2 —— 学习(三)

目录 一、绑定 class 样式 &#xff08;一&#xff09;字符串写法 1.流程介绍 2.代码实现 &#xff08;二&#xff09;数组写法 1.流程介绍 2.代码实现 &#xff08;三&#xff09;对象写法 1.流程介绍 2.代码实现 二、绑定 style 样式&#xff08;了解&#xff…

C++中不同变量(内置/类 类型) 的初始化规则

当定义 没有初始化式 的变量&#xff08;如int i;&#xff09;时&#xff0c;系统 有可能 会为我们进行隐式的初始化。至于系统是否帮我们隐式初始化变量&#xff0c;以及为变量赋予一个怎样的初始值&#xff0c;这要取决于该 变量的类型 以及我们在 何处定义的该变量 。 一、…

备忘录模式:恢复对象状态的智能方式

在软件开发中&#xff0c;备忘录模式是一种行为型设计模式&#xff0c;它允许捕获并外部化对象的内部状态&#xff0c;以便在未来某个时刻可以将对象恢复到此状态。这种模式是撤销操作或者回滚操作的关键实现机制。本文将详细介绍备忘录模式的定义、实现、应用场景以及优缺点。…

【linux深入剖析】深入理解基础外设--磁盘以及理解文件系统

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.磁盘物理结构2.磁盘…

HiveSQL基础Day04

一、CTE语法 CTE语法类似子查询&#xff0c;可以将一个select语句计算的结果当成一个新的临时表使用 -- 子查询&#xff0c;将子查询的结果当做表使用 select empno,ename from ( select * from emp) t1; -- 基本用法 with 临时表名 as(查询语句) select * from 临时表名 ​ -…