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

文章目录

    • Leetcode 669. 修剪二叉搜索树
      • 解题思路
      • 代码
      • 总结
    • Leetcode 108. 将有序数组转换为二叉搜索树
      • 解题思路
      • 代码
      • 总结
    • Leetcode 538. 把二叉搜索树转换为累加树
      • 解题思路
      • 代码
      • 总结

草稿图网站
java的Deque

Leetcode 669. 修剪二叉搜索树

题目:669. 修剪二叉搜索树
解析:代码随想录解析

解题思路

对于不符合的节点,如果该节点小于区间,则右孩子可能符合;如果该节点大于区间,则左孩子可能符合。

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root == null)return root;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;}
}//迭代法
class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root == null)return root;while (root != null && (root.val < low || root.val > high)) {if (root.val < low)root = root.right;elseroot = root.left;}TreeNode cur = root;while (cur != null) {while (cur.left != null && cur.left.val < low)cur.left = cur.left.right;cur = cur.left;}cur = root;while (cur != null) {while (cur.right != null && cur.right.val > high)cur.right = cur.right.left;cur = cur.right;}return root;}
}

总结

暂无

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

题目:108. 将有序数组转换为二叉搜索树
解析:代码随想录解析

解题思路

递归+数组

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode sortedArrayToBST(int[] nums) {if (nums == null || nums.length == 0)return null;return buildTree(nums, 0, nums.length);}private TreeNode buildTree(int[] nums, int left, int right) {if (left == right)return null;if (left + 1 == right)return new TreeNode(nums[left]);int mid = left + (right - left) / 2;TreeNode midNode = new TreeNode(nums[mid]);midNode.left = buildTree(nums, left, mid);midNode.right = buildTree(nums, mid + 1, right);return midNode;}
}

总结

迭代懒得写了

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

题目:538. 把二叉搜索树转换为累加树
解析:代码随想录解析

解题思路

反过来的中序

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {int sum = 0;public TreeNode convertBST(TreeNode root) {if (root == null)return null;order(root);return root;}private void order(TreeNode node) {if (node == null)return;order(node.right);sum += node.val;node.val = sum;order(node.left);}
}

总结

递归懒得写

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

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

相关文章

全量知识系统 程序详细设计 之 先验逻辑-实现:从“平凡”回到“平凡” (QA 百度搜索)

Q1. 思考&#xff1a;数学中的平凡&#xff0c;和程序中的平凡&#xff08;比如POJO&#xff09;、语言中的平凡&#xff08;比如纯文本&#xff09;&#xff0c;数据中的平凡&#xff08;比如 Number&#xff09;。因为我设计中的全知系统将设计的三个方面刻画为语言设计、程序…

tencentcloud-sdk-python-iotexplorer和tencent-iot-device有什么区别

1. tencent-iot-device tencent-iot-device 是腾讯云提供的物联网设备 SDK&#xff0c;用于在物联网场景中开发和连接设备。这个 SDK 提供了丰富的功能和接口&#xff0c;可以帮助开发者快速构建稳定、高效的物联网应用。 主要功能和特点&#xff1a; 设备连接管理&#xff1…

【DM8】AWR报告

sys.WRM$_WR_CONTROL记录快照的相关控制信息 sys.wrm $_snapshot记录快照的相关信息 1.初始化awr快照包 创建或删除DBMS_WORKLOAD_REPOSTORY系统包为1的时候开启&#xff0c;0的时候关闭 SELECT sf_check_awr_sys; sp_init_awr_sys(1);2.设置时间 –间隔10min一次 CALL dbms_…

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(2)

1.问题描述&#xff1a; 开发服务端推送&#xff0c;客户端能收到离线推送&#xff0c;但是推送收到的通知只能从手机顶部下拉看到&#xff0c;无法收到一个顶部的弹框。请问是什么原因&#xff1f; 解决方案&#xff1a; 可能原因一&#xff1a; 消息提醒的方式与消息类别有…

未来汽车硬件安全的需求(1)

目录 1.概述 2.EVITA 2.1 EVITA HSM 2.2 EVITA保护范围 3.市场变化对车载网络安全的影响 3.1 非侵入式攻击的风险 3.2 量子计算机的蛮力攻击 3.3 整车E/E架构的变化 3.4 网络安全标准和认证 3.5 汽车工业的网络安全措施 4.汽车安全控制器 4.1 TPM2.0 4.2 安全控…

CLIP模型入门

简介 CLIP&#xff08;Contrastive Language-Image Pre-Training&#xff09;是OpenAI在2021年初发布的多模态预训练神经网络模型&#xff0c;用于匹配图像和文本。该模型的关键创新之一是将图像和文本映射到统一的向量空间&#xff0c;通过对比学习的方式进行预训练&#xff…

华为eNSP网络模拟器

华为eNSP网络模拟器安装详细教程&#xff08;2024&#xff09; 华为eNSP网络模拟器安装详细教程&#xff08;2024&#xff09;_ensp安装-CSDN博客 eNSP设备基础配置 eNSP设备基础配置_ensp中路由器交换机pc机配置ip地址-CSDN博客 ENSP学习 ENSP学习-CSDN博客 【华为eNSP模拟器】…

运用OSI模型提升排错能力

1. OSI模型有什么实际的应用价值&#xff1f; 2. 二层和三层网络的区别和应用&#xff1b; 3. 如何通过OSI模型提升组网排错能力&#xff1f; -- OSI - 开放式系统互联 - 一个互联标准 - 从软件和硬件 定义标准 - 不同厂商的设备 研发的技术 - 具备兼容性 -- O…

知识图谱入门到实战之1.知识图谱基础

知识图谱基础 1.为什么要用知识图谱2.知识图谱的前世今生&#xff08;1&#xff09;发展脉络&#xff08;2&#xff09;发展阶段&#xff08;3&#xff09;知识图谱定义&#xff08;4&#xff09;知识类型&#xff08;5&#xff09;常见的开源知识图谱 3.知识图谱的相关技术&am…

微服务learning

一、部分网址 有道云笔记 (youdao.com) Spring Cloud Alibaba| ProcessOn免费在线作图,在线流程图,在线思维导图 系统由单体架构到微服务架构到底是如何演进的&#xff1f;-腾讯云开发者社区-腾讯云 (tencent.com) 阿里限流神器Sentinel夺命连环 17 问&#xff1f; - 掘金 …

拥有一台阿里云服务器可以做什么?

阿里云ECS云服务器可以用来做什么&#xff1f;云服务器可以用来搭建网站、爬虫、邮件服务器、接口服务器、个人博客、企业官网、数据库应用、大数据计算、AI人工智能、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;云服务器吧yunfuwuqiba.com整理阿里云服务器可以…

2024/4/5—力扣—下一个排列

代码实现&#xff1a; 思路&#xff1a;两遍扫描 void swap(int *a, int *b) {int t *a;*a *b;*b t; }void reverse(int *nums, int l, int r) {while (l < r) {swap(nums l, nums r);l;r--;} }void nextPermutation(int *nums, int numsSize) {int i numsSize - 2;wh…

陆面、生态、水文模拟与多源遥感数据同化

原文链接&#xff1a;陆面、生态、水文模拟与多源遥感数据同化https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601198&idx6&sn51b9b26b75c9df1f11dcb9a187878261&chksmfa820dc9cdf584df9ac3b997c767d63fef263d79d30238a6523db94f68aec621e1f91df85f6…

算法-日期问题

算法-日期问题 1.判断是否闰年 int is_leap(int y) {if((y%4000)||(y%40&&y%100!0)){return 1;}return 0; }2.每个月的天数 const int months[]{0,31,28,31,30,31,30,31,31,30,31,30,31};3.计算当前年当前月的天数 int get_month_days(int year,int month) {int re…

一位来自河南农村,大学前从未接触电脑的大二学生

怎么说呢&#xff0c;在大学前从未接触过编程&#xff0c;总以为编程是特别高大上的东西&#xff08;现在依然以为编程是高大上的东西哈哈哈&#xff09;&#xff0c;父母借钱凑了一台2800的联想笔记本电脑&#xff08;说实话看到室友七八千的电脑玩游戏真羡慕&#xff09;&…

LANG 和 LC_ALL两者的区别

LANG 和 LC_ALL 都是环境变量&#xff0c;用于设置系统的语言环境。它们的区别如下&#xff1a; LANG 环境变量&#xff1a; LANG 是 Linux 系统中定义的最基本的语言环境变量。它用于设置默认的区域设置&#xff0c;包括语言、字符集和其他本地化设置。当系统需要在多个环境变…

Docker 学习笔记(五):梳理 Docker 镜像知识,附带 Commit 方式提交镜像副本,安装可视化面板 portainer

一、前言 记录时间 [2024-4-10] 前置文章&#xff1a; Docker学习笔记&#xff08;一&#xff09;&#xff1a;入门篇&#xff0c;Docker概述、基本组成等&#xff0c;对Docker有一个初步的认识 Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&…

C++ 解引用与函数基础:内存地址、调用方法及声明

C 解引用 获取内存地址和值 在上一页的示例中&#xff0c;我们使用了指针变量来获取变量的内存地址&#xff08;与引用运算符 & 一起使用&#xff09;。但是&#xff0c;你也可以使用指针来获取变量的值&#xff0c;这可以通过使用 * 运算符&#xff08;解引用运算符&…

Latex中todonotes超出页面范围及其他参数说明

解决方案为 \usepackage{todonotes} \setlength{\marginparwidth}{2.25cm} % 设置边注宽度&#xff0c;否则todo会超出页面范围在使用todo时&#xff0c;还可以进一步设置行距和字体大小。 {\linespread{1.0} \todo[size\small]{这是一个todo}} 在 LaTeX 中&#xff0c;有一系…

库、框架、脚手架和IDE一文讲明白

在区分上面几个问题前&#xff0c;咱们先看看几个疑问。 一、常见问题汇总 js css直接复制到服务器 然后引用不就行了么&#xff1f; 为什么还需要安装&#xff1f; 引入js不就是引入了框架了吗&#xff1f;框架就是js&#xff1f; 脚手架和框架都有架&#xff0c;是不是一…