993. 二叉树的堂兄弟节点 python
题目:
在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。
如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。
我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。
只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。
example:
思路 python 【递归】
只有当深度相同,但父节点不同才为堂兄弟节点
- 可以创建parent、depth,并且获取到深度和父节点,然后最后再进行判断
代码
class Solution:
def isCousins(self, root: TreeNode, x: int, y: int) -> bool:
# 如果根节点为空,或者x值为根节点,或者y值为根节点,这些都为false
if (root is None or x == root.val or y == root.val): return False
parent = {}
depth = {}
# 获取到深度和父节点 字典
def dfs(node, par=None):
if node:
depth[node.val] = 1 + depth[par.val] if par else 0
parent[node.val] = par
dfs(node.left,node)
dfs(node.right,node)
dfs(root)
# 只有当两个深度相同,但父节点不同的时候才是true
return depth[x] == depth[y] and parent[x]!=parent[y]
学艺不精,还需努力💪