031 · Cousins in Binary Tree
algorithm
Problem
给定一棵二叉树的根节点 root,以及两个不同的节点值 x 和 y。
请判断值为 x 的节点和值为 y 的节点是否是堂兄弟节点。
在这道题里,两个节点是堂兄弟节点,需要同时满足两个条件:
- 它们在树中的深度相同
- 它们的父节点不同
这里的深度指的是从根节点到当前节点经过的边数。根节点的深度是 0,根节点的孩子深度是 1,再下一层深度是 2。
例如,下面这棵树中,4 和 5 都在第 2 层:
1
/ \
2 3
\ \
4 5
4 的父节点是 2,5 的父节点是 3。它们深度相同,并且父节点不同,所以它们是堂兄弟节点。
但如果两个节点虽然在同一层,却有同一个父节点,它们就不是堂兄弟节点。例如:
1
/
2
/ \
4 5
4 和 5 都在第 2 层,但它们的父节点都是 2,所以不是堂兄弟节点。
Examples
示例 1
Input: root = [1,2,3,4], x = 4, y = 3
Output: false
解释:4 的深度是 2,3 的深度是 1。它们不在同一层,所以不是堂兄弟节点。
示例 2
Input: root = [1,2,3,null,4,null,5], x = 5, y = 4
Output: true
解释:4 和 5 都在第 2 层。4 的父节点是 2,5 的父节点是 3,父节点不同,所以它们是堂兄弟节点。
示例 3
Input: root = [1,2,3,null,4], x = 2, y = 3
Output: false
解释:2 和 3 都在第 1 层,但它们的父节点都是 1,所以不是堂兄弟节点。
Constraints
- 树中节点的数量范围是 \([2, 100]\)
- 每个节点的值都在 \([1, 100]\) 范围内
- 每个节点的值都互不相同
x != yx和y都一定存在于这棵树中
Link
→ Solution