LeetCode 0993. Cousins in Binary Tree Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0993. Cousins in Binary Tree

Description

Given the root of a binary tree with unique values and the values of two different nodes of the tree x and y, return true if the nodes corresponding to the values x and y in the tree are cousins, or false otherwise.

Two nodes of a binary tree are cousins if they have the same depth with different parents.

Note that in a binary tree, the root node is at the depth 0, and children of each depth k node are at the depth k + 1.

 

Example 1:

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

Example 2:

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

Example 3:

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

 

Constraints:

  • The number of nodes in the tree is in the range [2, 100].
  • 1 <= Node.val <= 100
  • Each node has a unique value.
  • x != y
  • x and y are exist in the tree.

Solutions

Solution 1

PythonJavaC++GoTypeScript
# 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([(root, None)]) depth = 0 p1 = p2 = None d1 = d2 = None while q: for _ in range(len(q)): node, parent = q.popleft() if node.val == x: p1, d1 = parent, depth elif node.val == y: p2, d2 = parent, depth if node.left: q.append((node.left, node)) if node.right: q.append((node.right, node)) depth += 1 return p1 != p2 and d1 == d2(code-box)

Solution 2

PythonJavaC++GoTypeScript
# 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: def dfs(root, parent, depth): if root is None: return if root.val == x: st[0] = (parent, depth) elif root.val == y: st[1] = (parent, depth) dfs(root.left, root, depth + 1) dfs(root.right, root, depth + 1) st = [None, None] dfs(root, None, 0) return st[0][0] != st[1][0] and st[0][1] == st[1][1](code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !