LeetCode 0938.二叉搜索树的范围和:深度优先搜索(可中序遍历)

【LetMeFly】938.二叉搜索树的范围和:深度优先搜索(可中序遍历)

力扣题目链接:https://leetcode.cn/problems/range-sum-of-bst/

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。

 

示例 1:

输入:root = [10,5,15,3,7,null,18], low = 7, high = 15
输出:32

示例 2:

输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
输出:23

 

提示:

  • 树中节点数目在范围 [1, 2 * 104]
  • 1 <= Node.val <= 105
  • 1 <= low <= high <= 105
  • 所有 Node.val 互不相同

方法一:深度优先搜索(可中序遍历)

二叉搜索树有一个性质:其中序遍历得到的序列递增。

但其实我们不使用这个性质也可以,只需要将其当作一个普通的二叉树。

遍历二叉树(可以中序也可以其他)并且在遍历途中判断当前节点的值是否在[low, high]之间。如果是则累加之。

  • 时间复杂度 O ( N ) O(N) O(N),其中 N N N是二叉树节点的个数
  • 空间复杂度 O ( N ) O(N) O(N)

AC代码

C++
class Solution {  // AC,96.46%,73.98%
private:int ans;void dfs(TreeNode* root, int l, int r) {if (!root) {return;}dfs(root->left, l, r);if (root->val >= l && root->val <= r) {ans += root->val;}dfs(root->right, l, r);}
public:int rangeSumBST(TreeNode* root, int low, int high) {ans = 0;dfs(root, low, high);return ans;}
};
Python
# from typing import Optional# # Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = rightclass Solution:def dfs(self, root: Optional[TreeNode], l: int, r: int) -> None:if not root:returnself.dfs(root.left, l, r)if l <= root.val <= r:self.ans += root.valself.dfs(root.right, l, r)def rangeSumBST(self, root: Optional[TreeNode], low: int, high: int) -> int:self.ans = 0self.dfs(root, low, high)return self.ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/136306565

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

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

相关文章

LVS负载均衡服务器

简介: LVS (Linux Virtual Server):四层路由设备&#xff0c;是由中国人章文松研发的(阿里巴巴的副总裁)根据用户请求的IP与端口号实现将用户的请求分发至不同的主机。 工作原理: LVS工作在一台server上提供Directory(负载均衡器)的功能&#xff0c;本身并不提供服务&#xff…

【QT+QGIS跨平台编译】之五十三:【QGIS_CORE跨平台编译】—【qgssqlstatementparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…

2024年留学基金委(CSC) 青年骨干教师出国研修项目公布(附建议)

2月27日&#xff0c;国家留学基金委&#xff08;CSC&#xff09;公布了2024年青年骨干教师出国研修项目通知&#xff0c;知识人网小编现将项目指南、申请材料及说明、常见问题解答等原文转载并提出建议。 知识人网建议 一、2024年的通知精神与2023年相比变化不大。 二、建议 …

【零基础入门TypeScript】类 - class

目录 创建类 句法 示例&#xff1a;声明一个类 创建实例对象 句法 示例&#xff1a;实例化一个类 访问属性和函数 示例&#xff1a;将它们放在一起 类继承 句法 示例&#xff1a;类继承 例子 输出 TypeScript ─ 类继承和方法重写 静态关键字 例子 实例操作符…

【前端入门】设计模式+单多页+React

设计模式是一种解决特定问题的经验总结&#xff0c;它提供了经过验证的解决方案&#xff0c;可以在软件开发过程中使用。设计模式可以帮助前端开发人员更有效地组织和管理代码&#xff0c;并提供一种共享的语言和框架&#xff0c;以便与其他开发人员进行交流。 以下是一些常见…

【盲源分离】快速理解FastICA算法(附MATLAB绘图程序)

今天讲一个在信号分析领域较为常用的一个方法&#xff0c;即盲源分离算法中的FastICA。 我们先从一个经典的问题引入。 一、鸡尾酒舞会问题 想象一下&#xff0c;你身处一个熙熙攘攘的鸡尾酒舞会中。四周回荡着各种声音&#xff1a;笑声、交谈声、玻璃碰撞声&#xff0c;甚至…

【C++干货基地】C++:函数重载(深度解析Windows和Linux下函数的修饰规则)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

nacos开启鉴权+springboot配置用户名密码

nacos默认没有开启鉴权&#xff0c;springboot无需用户名密码即可连接nacos。从2.2.2版本开始&#xff0c;默认控制台也无需登录直接可进行操作。 因此本文记录一下如何开启鉴权&#xff0c;基于nacos2.3.0版本。 编辑nacos服务端的application.properties&#xff1a; # 开…

【wow-ts学习笔记】Vue3第一章:模板

本课程是DW内测开源课程wow-ts项目的学习笔记 项目地址&#xff1a; https://github.com/datawhalechina/wow-ts 什么是 Vue3​ Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并…

DCIC 2024 数据要素赛道算力资源申请与使用指南

云资源开通 企业认证通过后&#xff0c;由企业账号申请开通资源池服务 开通资源池服务 控制台左侧菜单【云资源】--【ModelArts】--【开通服务】后&#xff0c;方可申请专属资源&#xff0c;等待申请通过后即可正常使用资源。 OBS Browser使用 对象存储服务OBS是一个基…

css字体随着屏幕自适应

场景&#xff1a; 假设&#xff0c;字体为70px 在大屏显示正常&#xff0c;但是在笔记本上文字就换行了。我想字体随着屏幕变化而变化。 方法&#xff1a; 使用clamp函数&#xff0c;该函数接收三个参数&#xff1a;分别为 最小值&#xff0c;首选值&#xff0c;最大值。 .d…

java原理及插件,2022大厂Java面试必问题目

CAP原则 在分布式系统要满足CAP原则&#xff0c;一个提供数据服务的存储系统无法同时满足&#xff1a;数据一致性、数据可用性、分区耐受性。 C数据一致性&#xff1a;所有应用程序都能访问到相同的数据。 A数据可用性&#xff1a;任何时候&#xff0c;任何应用程序都可以读写…

C语言————结构体

接下来我们来了解C语言中很重要的内容&#xff1a;结构体。虽然到现在我们可以创建常量&#xff0c;变量&#xff0c;数组&#xff0c;但是存储的都是相同类型的数据&#xff0c;如果我们需要写入不同数据类型的信息怎么办&#xff0c;例如常见的身份证上的信息&#xff0c;有身…

小程序框架(概念、工作原理、发展及应用)

引言 移动应用的普及使得用户对于轻量级、即时可用的应用程序需求越来越迫切。在这个背景下&#xff0c;小程序应运而生&#xff0c;成为一种无需下载安装、即点即用的应用形式&#xff0c;为用户提供了更便捷的体验。小程序的快速发展离不开强大的开发支持&#xff0c;而小程…

这一步一步爬的伤痕累累

一、网安专业名词解释 ① CTF CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进…

yolov5v7v8目标检测增加计数功能--免费源码

在yolo系列中&#xff0c;很多网友都反馈过想要在目标检测的图片上&#xff0c;显示计数功能。其实官方已经实现了这个功能&#xff0c;只不过没有把相关的参数写到图片上。所以微智启软件工作室出一篇教程&#xff0c;教大家如何把计数的参数打印到图片上。 一、yolov5目标检测…

【物联网应用案例】智能农业应用案例

随着物联网 (IoT) 的广泛应用&#xff0c;各种互联设备已经深度融入我们的生活&#xff0c;涵盖了健康与健身、家庭自动化、物流运输以及智慧城市和工业物联网等多个领域。因此&#xff0c;将物联网、联网设备和自动化技术应用于农业&#xff0c;是十分符合时代发展需求的&…

求字符串所有整数最小和 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 1.输入字符串s输出s中包含所有整数的最小和&#xff0c;说明&#xff1a;1字符串s只包含a~z,A~Z,,-&#xff0c; 2.合法的整数包括正整数&#xff0c;一个或者多…

Mycat核心教程--Mycat 监控工具【四】

Mycat核心教程--Mycat 监控工具 九、Mycat 监控工具9.1.Mycat-web 简介9.2.Mycat-web 配置使用9.2.1.ZooKeeper 安装【上面有】9.2.2.Mycat-web 安装9.2.2.1.下载安装包9.2.2.2.安装包拷贝到Linux系统/opt目录下&#xff0c;并解压9.2.2.3.拷贝mycat-web文件夹到/usr/local目录…