题目:
给定一个二叉搜索树 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:
思路:
建立两个链表,一个升序,一个降序,相当于从一个数组两端相向而行,不断靠近,直到某一个结果符合题意。
/**
* 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:
void build_queue1(TreeNode* root,queue<TreeNode*> &S)
{
if(root==NULL)
{
return;
}
build_queue1(root->left,S);
S.push(root);
build_queue1(root->right,S);
}
void build_queue2(TreeNode* root

该博客介绍了如何使用C++编程解决LeetCode第653题,即在二叉搜索树中找到两个节点,使它们的和等于给定的目标值。通过创建升序和降序链表,模拟数组两端相向而行的过程,直到找到符合条件的节点对。文章提供了具体示例和代码实现。
最低0.47元/天 解锁文章
210

被折叠的 条评论
为什么被折叠?



