当前位置:网站首页>【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;
}
};
边栏推荐
- Win11 file types, how to change?Win11 modify the file suffix
- 3-5年以上的功能测试如何进阶自动化?
- RAID介绍及RAID5配置实例
- Rust 入门指南 (用 WASM 开发第一个 Web 页面)
- Heap Sort
- Camunda整体架构和相关概念
- There are 12 balls, including 11 weight, only one, don't know is light or heavy. Three times in balance scales, find out the ball.
- 广东对小鹏/广汽丰田开展网络安全检查
- 无代码平台多项选择入门教程
- 昨夜梦佳人,七夕试伊妆丨基于ModelArts实现AI妆容迁移丨【玩转华为云】
猜你喜欢
随机推荐
无代码平台多项选择入门教程
双向带头循环链表实现
Jina 实例秀|基于神经搜索的网络安全威胁检测(一)
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三
HCIP 第十七天
线程必备内容
MySQL: Integrity Constraints and Table Design Principles
开源一夏|ArkUI如何自定义弹窗(eTS)
CompletableFuture接口核心方法介绍
cubemx stm32 afm3000 module gas flow sensor driver code
Heap Sort
vscode插件设置——Golang开发环境配置
Apache Calcite 框架原理入门和生产应用
章节小测一
datax oracle to oracle离线json文件
【机器学习】:如何对你的数据进行分类?
MySQL最大建议行数2000w, 靠谱吗?
Rust 入门指南 (用 WASM 开发第一个 Web 页面)
Digital management insight into retail and e-commerce operations - retail password
《迁移学习导论》第2版,升级内容抢先看!