938. 二叉搜索树的范围和

server/2025/2/6 7:45:58/
  1. 二叉搜索树的范围和
    给定二叉搜索树的根结点 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 互不相同

#include <iostream>
#include <vector>
#include <string>
using namespace std;// 定义二叉树节点结构体
struct TreeNode {int val;                // 节点的值TreeNode* left;         // 指向左子节点的指针TreeNode* right;        // 指向右子节点的指针// 默认构造函数:初始化节点值为 0,左右子节点为空TreeNode() : val(0), left(nullptr), right(nullptr) {}// 构造函数:初始化节点值,并设置左右子节点为空TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}// 构造函数:初始化节点值,并指定左右子节点TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};class Solution {
public:int rangeSumBST(TreeNode* root, int low, int high) {//int sum = 0; //每次调用清0,避免错误累加,不需要sum了,节点本身相加就够了if (!root) //当前节点不存在,停止递归return 0;if (root->val < low) //如果当前节点的值比low还小,只需要遍历右子树return rangeSumBST(root->right,low,high);if (root->val > high) //如果当前节点的值比high还大,只需要遍历左子树return rangeSumBST(root->left, low, high);//如果当前节点的值在[low,high],更新和return root->val+rangeSumBST(root->left, low, high)+rangeSumBST(root->right, low, high);}
};
// 释放二叉树的内存
void freeTree(TreeNode* root) {if (!root) return;freeTree(root->left);freeTree(root->right);delete root;
}int main() {// 构造测试二叉搜索树TreeNode* root = new TreeNode(10);root->left = new TreeNode(5);root->right = new TreeNode(15);root->left->left = new TreeNode(3);root->left->right = new TreeNode(7);root->right->right = new TreeNode(18);// 测试 rangeSumBSTSolution sol;int low = 7, high = 15;int sum = sol.rangeSumBST(root, low, high);cout << "范围 [" << low << ", " << high << "] 内的节点值之和为: " << sum << endl;// 释放二叉树的内存freeTree(root);return 0;
}

http://www.ppmy.cn/server/165356.html

相关文章

MATLAB的数据类型和各类数据类型转化示例

一、MATLAB的数据类型 在MATLAB中 &#xff0c;数据类型是非常重要的概念&#xff0c;因为它们决定了如何存储和操作数据。MATLAB支持数值型、字符型、字符串型、逻辑型、结构体、单元数组、数组和矩阵等多种数据类型。MATLAB 是一种动态类型语言&#xff0c;这意味着变量的数…

大数据相关职位介绍之一(数据分析,数据开发,数据产品经理,数据运营)

大数据相关职位介绍之一 随着大数据、人工智能&#xff08;AI&#xff09;和机器学习的快速发展&#xff0c;数据分析与管理已经成为各行各业的重要组成部分。从互联网公司到传统行业的数字转型&#xff0c;数据相关职位在中国日益成为推动企业创新和提升竞争力的关键力量。以…

C#结合html2canvas生成切割图片并导出到PDF

目录 需求 开发运行环境 实现 生成HTML范例片断 HTML元素转BASE64 BASE64转图片 切割长图片 生成PDF文件 小结 需求 html2canvas 是一个 JavaScript 库&#xff0c;它可以把任意一个网页中的元素&#xff08;包括整个网页&#xff09;绘制到指定的 canvas 中&#xf…

WPF进阶 | WPF 动画特效揭秘:实现炫酷的界面交互效果

WPF进阶 | WPF 动画特效揭秘&#xff1a;实现炫酷的界面交互效果 前言一、WPF 动画基础概念1.1 什么是 WPF 动画1.2 动画的基本类型1.3 动画的核心元素 二、线性动画详解2.1 DoubleAnimation 的使用2.2 ColorAnimation 实现颜色渐变 三、关键帧动画深入3.1 DoubleAnimationUsin…

安装RabbitMQ

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/SUWXdDb0UoCV86xP6b3c7qtMn6b 使用Ubuntu环境进行安装 一、安装Erlang 在安装RabbitMQ之前,我们需要先安装Erlang,RabbitMQ需要Erlang的语言支持 #安装Erlang sudo apt-get install erlang 在安装的过程中,会弹出一段信息,此…

一文了解性能优化的方法

背景 在应用上线后&#xff0c;用户感知较明显的&#xff0c;除了功能满足需求之外&#xff0c;再者就是程序的性能了。因此&#xff0c;在日常开发中&#xff0c;我们除了满足基本的功能之外&#xff0c;还应该考虑性能因素。关注并可以优化程序性能&#xff0c;也是体现开发能…

C语言:深入了解指针3

1.回调函数是什么&#xff1f; 基本概念 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就是回调函数。回调函数不是由该函…

GaussDB安全配置建议

安全性是华为云与您的共同责任。华为云负责云服务自身的安全&#xff0c;提供安全的云。作为租户&#xff0c;您需要合理使用云服务提供的安全能力对数据进行保护&#xff0c;安全地使用云。详情请参见责任共担。 本文提供了GaussDB使用过程中的安全配置建议&#xff0c;旨在为…