leetcode-993-cousins-in-binary-tree
题意:判断两个节点是否是相同深度且不同父亲(堂兄弟姐妹)
bfs,将节点和深度绑定为pair加入队列,记录目标节点的深度和父亲
遍历完之后判断即可
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int d1=0,p1=0;
int d2=0,p2=0;
void bfs(TreeNode* root,int x, int y)
{
queue<pair<TreeNode*,int>> q;
q.push({root,1});
int d=1,p=1;
while(!q.empty())
{
TreeNode* t = q.front().first;
int dd = q.front().second;
q.pop();
if(t->left){
if(t->left->val==x){
p1=t->val;
d1=dd+1;
}
if(t->left->val==y){
p2=t->val;
d2=dd+1;
}
q.push({t->left,dd+1});
}
if(t->right){
if(t->right->val==x){
p1=t->val;
d1=dd+1;
}
if(t->right->val==y){
p2=t->val;
d2=dd+1;
}
q.push({t->right,dd+1});
}
}
}
bool isCousins(TreeNode* root, int x, int y) {
bfs(root,x,y);
if(d1==d2&&p1!=p2) return true;
else return false;
}
};