当前位置: 首页 > article >正文

Leetcode653. 两数之和 IV - 输入二叉搜索树

题目链接

Leetcode653. 两数之和 IV - 输入二叉搜索树 easy

题目描述

给定一个二叉搜索树 root和一个目标结果 k,如果二叉搜索树中存在两个元素且它们的和等于给定的目标结果,则返回 true

示例 1:

在这里插入图片描述

输入: root = [5,3,6,2,4,null,7], k = 9
输出: true

示例 2:

在这里插入图片描述

输入: root = [5,3,6,2,4,null,7], k = 28
输出: false

提示:

  • 二叉树的节点个数的范围是 [ 1 , 1 0 4 ] [1, 10^4] [1,104].
  • − 1 0 4 < = N o d e . v a l < = 1 0 4 -10^4 <= Node.val <= 10^4 104<=Node.val<=104
  • 题目数据保证,输入的 root是一棵 有效 的二叉搜索树
  • − 1 0 5 < = k < = 1 0 5 -10^5 <= k <= 10^5 105<=k<=105

解法:递归 + 哈希表

思路跟 两数之和 一样。

用一个 哈希表 uset记录已经遍历过的节点值。

如果 k − r o o t . v a l k - root.val kroot.val 存在哈希表 uset中,说明这棵树中存在两个数之和为 k k k ,返回 true。其他情况都返回 false

时间复杂度: O ( n ) O(n) O(n)

C++代码:

class Solution {
public:
    unordered_set<int> uset;

    bool findTarget(TreeNode* root, int k) {
        if(root==nullptr) return false;
        if(uset.count(k - root->val)) return true;

        uset.insert(root->val);

        return findTarget(root->left,k) || findTarget(root->right,k);
    }
};



http://www.kler.cn/a/8100.html

相关文章:

  • ML 系列: 第 23 节 — 离散概率分布 (多项式分布)
  • 软件测试面试2024最新热点问题
  • Qt 实现文件监控程序
  • 第二节 OSI-物理层
  • PostgreSQL中的COPY命令:高效数据导入与导出
  • 应对JSON解析键值对乱序问题的实用解决方案
  • JavaScript 解析Json字符串的性能比较分析代码
  • WeakTr阅读笔记
  • Spring销毁的几种实现
  • 【vSphere | Python】vSphere Automation SDK for Python Ⅵ—— VM Guest Processes APIs
  • 实时决策系统中 OpenMLDB 的常见架构整合方式
  • 【微信小程序-原生开发】系列教程目录(已完结)
  • 只依赖Tensorrt和opencv的yolov5源代码
  • GPT的未来--基于标准接口的由计算机和无数工业软件构成的联合体
  • 青少年CTF训练平台-WEB-部分wp
  • vue给input框属性赋值的方法
  • Android系统重要组件AMS
  • 【Spring】4—声明式事务
  • 【Mysql系列】——详细剖析数据库中的存储引擎
  • Java面向对象三剑客之——继承
  • Burp Suite的使用(常用模块)
  • python基础-元组
  • 【gRPC】第1篇 全面讲解RPC原理(必收藏)
  • egg编写用户点赞的接口
  • 思维导图手撕MyBatis源码
  • Spring中的循环依赖是什么?如何解决它?