当前位置:网站首页>【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;
}
};
边栏推荐
猜你喜欢
随机推荐
无代码平台多行文字入门教程
浅析深度学习在图像处理中的应用趋势及常见技巧
【励志】复盘的重要性
Servlet基础详细版
Win11怎么重装显卡驱动程序?Win11显卡驱动怎么卸载重装?
无代码平台单项选择入门教程
BOSS 直聘回应女大学生连遭两次性骚扰:高度重视求职者安全,可通过 App 等举报
map的一道题目<单词识别>
Learn to use the basic interface of set and map
Camunda overall architecture and related concepts
mae,mse,rmse分别利用sklearn和numpy实现
Camunda整体架构和相关概念
有12个球,其中11个重量相等,只有1个不一样,不知是轻还是重.用天平秤三次,找出这个球.
图文手把手教程--ESP32 OTA空中升级(VSCODE+IDF)
Rust 入门指南 (用 WASM 开发第一个 Web 页面)
MySQL最大建议行数2000w, 靠谱吗?
无代码平台描述文字入门教程
ORA-00054 资源正忙
怎么禁止textarea拉伸
Small program containers accelerate the construction of an integrated online government service platform