CODE

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isCousins(self, root: Optional[TreeNode], x: int, y: int) -> bool:
        q = deque()
        q.append((root, None))
        x_dep, x_par, y_dep, y_par = None, None, None, None
        depth = 0
        while q:
            for _ in range(len(q)):
                curr, par = q.popleft()
                if curr.val == x:
                    x_dep, x_par = depth, par 
                if curr.val == y:
                    y_dep, y_par = depth, par
                if curr.left: q.append((curr.left, curr.val))
                if curr.right: q.append((curr.right, curr.val))
            depth += 1
        return x_dep == y_dep and x_par != y_par
        
        
        

Last updated