leetcode 993. Cousins in Binary Tree
题意:给你一个二叉树,再给你两个节点,判断这两个节点是不是cousins关系。cousins关系指的是:两个节点有相同深度,但是不同的父节点。
思路:简单二叉树遍历,得到两个节点的深度,以及父节点,比较就好了。
/**
* 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:
bool isCousins(TreeNode* root, int x, int y) {
search(root,x,y,0,nullptr);
return x_level == y_level && x_parent != y_parent;
}
void search(TreeNode* root,int x,int y,int level,TreeNode *parent)
{
if(root== nullptr) return ;
if(root->val == x)
{
x_level = level;
x_parent = parent;
}
if(root->val == y)
{
y_level = level;
y_parent = parent;
}
search(root->left,x,y,level+1,root);
search(root->right,x,y,level+1,root);
}
private:
int x_level;
TreeNode* x_parent;
int y_level;
TreeNode* y_parent;
};