# 993.Cousins in Binary Tree

**993.Cousins in Binary Tree**

难度:Easy

> 在二叉树中，根节点位于深度 0 处，每个深度为 k 的节点的子节点位于深度 k+1 处。

如果二叉树的两个节点深度相同，但父节点不同，则它们是一对堂兄弟节点。

我们给出了具有唯一值的二叉树的根节点 root，以及树中两个不同节点的值 x 和 y。

只有与值 x 和 y 对应的节点是堂兄弟节点时，才返回 true。否则，返回 false。

示例 1：

![q1248-01.png](https://i.loli.net/2019/07/09/5d2430a9a61df55134.png)

输入：root = \[1,2,3,4], x = 4, y = 3 输出：false 示例 2：

![q1248-02.png](https://i.loli.net/2019/07/09/5d2430a586b6767840.png)

输入：root = \[1,2,3,null,4,null,5], x = 5, y = 4 输出：true 示例 3：

![q1248-03.png](https://i.loli.net/2019/07/09/5d2430a83ec4b81137.png)

输入：root = \[1,2,3,null,4], x = 2, y = 3 输出：false

提示：

二叉树的节点数介于 2 到 100 之间。 每个节点的值都是唯一的、范围为 1 到 100 的整数。

创建一个辅助函数，用于求取二叉树的节点深度和保留当前父节点的值。最后通过比较备份和父节点，判断是否是堂兄弟。

```
/**
 * 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 {
pair<int,int>depth;
bool getDepth(TreeNode* root, int x)
{
    if(root->left )
    {
         if(root->left->val == x){
        ++depth.first ;
        depth.second=root->val;
        return  true;
         }
        else if(getDepth(root->left, x))        
        {
             ++depth.first ;
            return true;
        }
    }
    if(root->right)
    {
        if(root->right->val == x) 
        {
            ++depth.first ;
        depth.second=root->val;
        return  true;
        }
        else if(getDepth(root->right, x))  
        {
             ++depth.first ;
            return true;
        }
    }
    return false;
}
public:
    bool isCousins(TreeNode* root, int x, int y) {
        if(root->val == x || root->val ==y) return false;
        depth=pair<int,int>(0,0);
        getDepth(root,x);
        pair<int,int>xp(depth);
        depth.first=0;
        getDepth(root,y);
    //   cout<<xp.first << " "<< xp.second<<endl;
//         cout<<depth.first << " "<< depth.second<<endl;
        return  xp.first==depth.first && xp.second != depth.second;
    }
};
```

> 执行用时 :4ms, 在所有 C++ 提交中击败了95.65%的用户\
> 内存消耗 :11MB, 在所有 C++ 提交中击败了93.75%的用户


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dfine.gitbook.io/leetcode/993.cousins_in_binary_tree.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
