#3593
Minimum Increments to Equalize Leaf Paths
MediumArrayDynamic ProgrammingTreeDepth-First SearchTree TraversalDynamic Programming
Approaches
Brute ForceOptimal
Complexity Comparison
| Brute Force | Optimal Solution★ | |
|---|---|---|
| Time | O(n²) | O(n) |
| Space | O(1) | O(n) |
💡
Intuition
Time O(n)Space O(n)
Use DFS to traverse the tree, calculating the path costs dynamically while keeping track of the maximum leaf cost. Adjust node costs only when necessary.
⚙️
Algorithm
3 steps- 1Step 1: Perform DFS to calculate the total cost of each root-to-leaf path.
- 2Step 2: Track the maximum leaf cost found during traversal.
- 3Step 3: For each node, compute the increments needed to reach the maximum leaf cost and count the nodes that need adjustment.
solution.py19 lines
1def minIncrements(n, edges, cost):
2 from collections import defaultdict
3 tree = defaultdict(list)
4 for u, v in edges:
5 tree[u].append(v)
6 tree[v].append(u)
7 maxLeafCost = 0
8 def dfs(node, parent, currentCost):
9 nonlocal maxLeafCost
10 currentCost += cost[node]
11 isLeaf = True
12 for neighbor in tree[node]:
13 if neighbor != parent:
14 isLeaf = False
15 dfs(neighbor, node, currentCost)
16 if isLeaf:
17 maxLeafCost = max(maxLeafCost, currentCost)
18 dfs(0, -1, 0)
19 return maxLeafCostℹ
Complexity note: DFS visits each node once, leading to linear time complexity.
- 1Each path must match the maximum leaf path cost.
- 2Only nodes contributing to paths with lesser costs need adjustments.
Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.