题:判断二叉树中是否有满足x+y=target的整数对(x,y)
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
#include <unordered_map>
#include <queue>
using namespace std;
class Solution {
private:
queue<TreeNode*> Queue;
unordered_map<int,bool> M;
public:
bool findTarget(TreeNode* root, int k) { //递归广度优先遍历二叉树
int val=root->val;
int target=k-val;
if(M.count(val)==0){
M[target]=true;
if(root->left!=nullptr)Queue.push(root->left);
if(root->right!=nullptr)Queue.push(root->right);
if(!Queue.empty()){
return findTarget(Queue.front(),k);
Queue.pop(); //queue.pop()移除队列首项,但不返回其值
}
else return false;
}
else return true;
}
};