-
Notifications
You must be signed in to change notification settings - Fork 0
/
m1530 Daily v1.py
35 lines (30 loc) · 1.13 KB
/
m1530 Daily v1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 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 countPairs(self, root: TreeNode, distance: int) -> int:
paths = []
def dfs(paths: List[Set[TreeNode]],
currPath: Set[TreeNode] = set([root]),
curr: TreeNode = root) -> None :
if not curr.left and not curr.right :
paths.append(currPath.copy())
return
if curr.left :
currPath.add(curr.left)
dfs(paths, currPath, curr.left)
currPath.remove(curr.left)
if curr.right :
currPath.add(curr.right)
dfs(paths, currPath, curr.right)
currPath.remove(curr.right)
dfs(paths)
counter = 0
for i in range(len(paths) - 1) :
for j in range(i + 1, len(paths)) :
if len(paths[i]) + len(paths[j]) - len(paths[i] & paths[j]) * 2 <= distance :
counter += 1
return counter