Skip to content

Commit 2ae0436

Browse files
authored
Create cousins-in-binary-tree.py
1 parent 29076aa commit 2ae0436

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

Python/cousins-in-binary-tree.py

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Time: O(n)
2+
# Space: O(h)
3+
4+
# Definition for a binary tree node.
5+
class TreeNode(object):
6+
def __init__(self, x):
7+
self.val = x
8+
self.left = None
9+
self.right = None
10+
11+
12+
class Solution(object):
13+
def isCousins(self, root, x, y):
14+
"""
15+
:type root: TreeNode
16+
:type x: int
17+
:type y: int
18+
:rtype: bool
19+
"""
20+
def dfs(root, x, depth, parent):
21+
if not root:
22+
return False
23+
if root.val == x:
24+
return True
25+
depth[0] += 1
26+
prev_parent, parent[0] = parent[0], root
27+
if dfs(root.left, x, depth, parent):
28+
return True
29+
parent[0] = root
30+
if dfs(root.right, x, depth, parent):
31+
return True
32+
parent[0] = prev_parent
33+
depth[0] -= 1
34+
return False
35+
36+
depth_x, depth_y = [0], [0]
37+
parent_x, parent_y = [None], [None]
38+
return dfs(root, x, depth_x, parent_x) and \
39+
dfs(root, y, depth_y, parent_y) and \
40+
depth_x[0] == depth_y[0] and \
41+
parent_x[0] != parent_y[0]
42+
43+

0 commit comments

Comments
 (0)