原题目:https://leetcode-cn.com/problems/cousins-in-binary-tree/
思路:
用p1,p2记录x和y的父节点,初始化为0,进行BFS。
在一层遍历之中,如果找到了p1或者p2就进行判断,
1、如果p1,p2有一个是0,表示他们两个不在同一层,
2、如果p1==p2,也不满足条件
代码:
class Solution {
public:
bool isCousins(TreeNode* root, int x, int y) {
//p1,p2记录他们父节点的值
int p1=0,p2=0;
queue<TreeNode*> q;
q.push(root);
int size;
TreeNode* tmp;
while(!q.empty()){
size = q.size();
for(int i=0;i<size;i++){
tmp = q.front();q.pop();
if(tmp->left) q.push(tmp->left);
if(tmp->right) q.push(tmp->right);
if(tmp->left && tmp->left->val == x)p1=tmp->val;
if(tmp->left && tmp->left->val == y)p2=tmp->val;
if(tmp->right && tmp->right->val==x) p1=tmp->val;
if(tmp->right && tmp->right->val==y) p2 = tmp->val;
}
//找到了一个节点
if(p1 || p2){
if(p1==0||p2==0||p1==p2) return false;
else return true;
}
}
return false;
}
};