cpp 层次遍历
题目:在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。
如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。
我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。
只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
level存储当前行的节点,levelval存储下一行的节点值,通过levelval进行判断
// An highlighted block
class Solution {
public:
bool isCousins(TreeNode* root, int x, int y) {
queue<TreeNode> level ;
level.push(*root);
while (!level.empty()){
int num = level.size();
int a = 0, b = 0;
vector<int> levelval;
for(int i = 0 ; i < num ; i ++){
TreeNode temp = level.front();
level.pop();
if(temp.left != nullptr){
level.push(*temp.left);
levelval.push_back(temp.left->val);
a = temp.left->val;
}
if(temp.right != nullptr){
level.push(*temp.right);
levelval.push_back(temp.right->val);
b = temp.right->val;
}
if((a == x && b == y)||(a == y && b == x)){
return false;
}
a = 0 , b = 0;
}
a = 0 , b = 0;
for (auto it : levelval){
cout << it <<' ';
if(it == x) a = 1;
if(it == y) b = 1;
}
cout << endl;
if(a + b == 2)
return true;
}
return false;
}
};