General Tree Top-Down DFS¶
Table of Contents¶
- 1376. Time Needed to Inform All Employees (Medium)
- 1443. Minimum Time to Collect All Apples in a Tree (Medium)
- 1377. Frog Position After T Seconds (Hard)
- 3067. Count Pairs of Connectable Servers in a Weighted Tree Network (Medium)
- 3372. Maximize the Number of Target Nodes After Connecting Trees I (Medium)
- 2467. Most Profitable Path in a Tree (Medium)
- 3373. Maximize the Number of Target Nodes After Connecting Trees II (Hard)
- 1766. Tree of Coprimes (Hard)
- 3425. Longest Special Path (Hard)
- 2791. Count Paths That Can Form a Palindrome in a Tree (Hard)
1376. Time Needed to Inform All Employees¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: tree, depth first search, breadth first search
from collections import defaultdict, deque
from typing import List
# DFS
def numOfMinutesDFS(
n: int, headID: int, manager: List[int], informTime: List[int]
) -> int:
graph = defaultdict(list)
for i in range(n):
if manager[i] != -1:
graph[manager[i]].append(i)
def dfs(node):
time = 0
for sub in graph[node]:
time = max(time, dfs(sub))
return time + informTime[node]
return dfs(headID)
# BFS
def numOfMinutesBFS(
n: int, headID: int, manager: List[int], informTime: List[int]
) -> int:
graph = defaultdict(list)
for i in range(n):
if manager[i] != -1:
graph[manager[i]].append(i)
q = deque([(headID, 0)])
max_time = 0
while q:
node, time = q.popleft()
max_time = max(max_time, time)
for sub in graph[node]:
q.append((sub, time + informTime[node]))
return max_time
n = 6
headID = 2
manager = [2, 2, -1, 2, 2, 2]
informTime = [0, 0, 1, 0, 0, 0]
print(numOfMinutesDFS(n, headID, manager, informTime)) # 1
print(numOfMinutesBFS(n, headID, manager, informTime)) # 1
1443. Minimum Time to Collect All Apples in a Tree¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: hash table, tree, depth first search, breadth first search
1377. Frog Position After T Seconds¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: tree, depth first search, breadth first search, graph
3067. Count Pairs of Connectable Servers in a Weighted Tree Network¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, tree, depth first search
3372. Maximize the Number of Target Nodes After Connecting Trees I¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: tree, depth first search, breadth first search
2467. Most Profitable Path in a Tree¶
-
LeetCode | LeetCode CH (Medium)
-
Tags: array, tree, depth first search, breadth first search, graph
3373. Maximize the Number of Target Nodes After Connecting Trees II¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: tree, depth first search, breadth first search
1766. Tree of Coprimes¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, math, tree, depth first search, number theory
3425. Longest Special Path¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: array, hash table, tree, depth first search, sliding window
2791. Count Paths That Can Form a Palindrome in a Tree¶
-
LeetCode | LeetCode CH (Hard)
-
Tags: dynamic programming, bit manipulation, tree, depth first search, bitmask