class Solution {
public:
void dfs(TreeNode* now,map<int,int>& mp){
mp[now->val] = 1;
if(now->left != NULL) dfs(now->left,mp);
if(now->right != NULL) dfs(now->right,mp);
}
bool dfsB(TreeNode* now,int& target,map<int,int>& mp){
if(mp[target-now->val] == 1) return true;
bool ans = false;
if(now->left != NULL) ans = ans || dfsB(now->left,target,mp);
if(now->right != NULL) ans = ans || dfsB(now->right,target,mp);
return ans;
}
bool twoSumBSTs(TreeNode* root1, TreeNode* root2, int target) {
if(root1 == NULL) return false;
if(root2 == NULL) return false;
map<int,int> mp;
dfs(root1,mp);
return dfsB(root2,target,mp);
}
};
No.127 - LeetCode1214
最新推荐文章于 2021-09-16 15:18:24 发布
本文介绍了一种算法,用于在两个二叉搜索树中查找是否存在两个节点,其值相加等于给定的目标值。通过深度优先搜索(DFS)遍历一棵树并记录节点值,再遍历另一棵树检查是否存在目标值减去当前节点值的配对。
193

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



