当前位置:网站首页>【LeetCode】653. 两数之和 IV - 输入 BST
【LeetCode】653. 两数之和 IV - 输入 BST
2022-08-04 10:50:00 【酥酥~】
题目
给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 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, 104].
-104 <= Node.val <= 104
root 为二叉搜索树
-105 <= k <= 105
题解
广度优先遍历+二叉搜索树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * 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:
bool searchBST(TreeNode* root,int val,TreeNode* same)
{
if(root == nullptr)
return false;
if(root->val == val && root!=same)
return true;
return searchBST(val < root->val ? root->left : root->right,val,same);
}
bool findTarget(TreeNode* root, int k) {
queue<TreeNode*> myqueue;
myqueue.emplace(root);
while(!myqueue.empty())
{
TreeNode* node;
node = myqueue.front();
myqueue.pop();
if(searchBST(root,k - node->val,node))
return true;
if(node->left)
myqueue.emplace(node->left);
if(node->right)
myqueue.emplace(node->right);
}
return false;
}
};
广度优先遍历+哈希表
class Solution {
public:
bool findTarget(TreeNode* root, int k) {
queue<TreeNode*> myqueue;
myqueue.emplace(root);
TreeNode* node;
unordered_set<int> myset;
while(!myqueue.empty())
{
node = myqueue.front();
myqueue.pop();
if(myset.count(k - node->val))
return true;
myset.emplace(node->val);
if(node->left)
myqueue.emplace(node->left);
if(node->right)
myqueue.emplace(node->right);
}
return false;
}
};
边栏推荐
- Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)
- ArrayList和LinkedList的区别
- 二叉树与堆
- MySQL最大建议行数2000w, 靠谱吗?
- 3-5年以上的功能测试如何进阶自动化?
- 《迁移学习导论》第2版,升级内容抢先看!
- Rust 入门指南 (用 WASM 开发第一个 Web 页面)
- 华为开源:聚焦开源基础软件,共建健康繁荣生态
- 语音社交app源码——具备哪些开发优势?
- What is the principle of thermal imaging temperature measurement?Do you know?
猜你喜欢

C语言*小白的探险历程

什么是终端特权管理

RAID介绍及RAID5配置实例

HCIP 第十八天

Small program containers accelerate the construction of an integrated online government service platform

Graphical Hands-on Tutorial--ESP32 OTA Over-the-Air Upgrade (VSCODE+IDF)

二叉树与堆

Rust 入门指南 (用 WASM 开发第一个 Web 页面)

Camunda overall architecture and related concepts

Events in August | 51CTO's 17th Anniversary Celebration, post a blog post to get gifts such as tea sets/notebooks/T-shirts!
随机推荐
无代码平台单项选择入门教程
无代码平台描述文字入门教程
MATLAB程序设计与应用 3.1 特殊矩阵
热成像测温的原理是什么呢?你知道吗?
What is the terminal privilege management
SkiaSharp 之 WPF 自绘 粒子花园(案例版)
低代码是开发的未来吗?浅谈低代码开发平台的发展现状及未来趋势
CVPR 2022 | 从人体网格预测骨架,是真正的生理学骨架!
MySQL:面试问的范式设计
二叉树的基础练习
Mobile open source low code tools beeware and kivy
数据化管理洞悉零售及电子商务运营——零售密码
A topic of map
Advanced transcriptome analysis and R data visualization hot registration (2022.10)
RL78 development environment
Jina 实例秀|七夕神器!比你更懂你女友的AI口红推荐
Google Earth Engine APP ——制作上传GIF动图并添加全球矢量位置
美摄问答室|美映 VS 美摄云剪辑
MySQL:完整性约束和 表的设计原则
Rust 入门指南 (用 WASM 开发第一个 Web 页面)