031 · Cousins in Binary Tree

algorithm
Published

June 8, 2026

Problem

给定一棵二叉树的根节点 root,以及两个不同的节点值 xy

请判断值为 x 的节点和值为 y 的节点是否是堂兄弟节点

在这道题里,两个节点是堂兄弟节点,需要同时满足两个条件:

  • 它们在树中的深度相同
  • 它们的父节点不同

这里的深度指的是从根节点到当前节点经过的边数。根节点的深度是 0,根节点的孩子深度是 1,再下一层深度是 2

例如,下面这棵树中,45 都在第 2 层:

    1
   / \
  2   3
   \   \
    4   5

4 的父节点是 25 的父节点是 3。它们深度相同,并且父节点不同,所以它们是堂兄弟节点。

但如果两个节点虽然在同一层,却有同一个父节点,它们就不是堂兄弟节点。例如:

    1
   /
  2
 / \
4   5

45 都在第 2 层,但它们的父节点都是 2,所以不是堂兄弟节点。

Examples

示例 1

Input:  root = [1,2,3,4], x = 4, y = 3
Output: false

解释:4 的深度是 23 的深度是 1。它们不在同一层,所以不是堂兄弟节点。

示例 2

Input:  root = [1,2,3,null,4,null,5], x = 5, y = 4
Output: true

解释:45 都在第 2 层。4 的父节点是 25 的父节点是 3,父节点不同,所以它们是堂兄弟节点。

示例 3

Input:  root = [1,2,3,null,4], x = 2, y = 3
Output: false

解释:23 都在第 1 层,但它们的父节点都是 1,所以不是堂兄弟节点。

Constraints

  • 树中节点的数量范围是 \([2, 100]\)
  • 每个节点的值都在 \([1, 100]\) 范围内
  • 每个节点的值都互不相同
  • x != y
  • xy 都一定存在于这棵树中