You are given a directed version of a tree with n nodes labeled from 0 to n - 1. Each undirected edge of the tree appears once in the input as a directed edge u -> v.
You may choose any node as the root. After choosing the root, every edge should point away from that root. You may reverse edges, and each reversed edge costs 1.
Return the minimum number of edge reversals needed over all possible root choices.
Complete the function minEdgeReversalsForRoot in the editor below.
minEdgeReversalsForRoot has the following parameters:
int n: the number of nodesint[][] edges: directed edges whereedges[i] = [u, v]means the current direction isu -> v
Returns
int: the minimum number of reversals required.
n = 5 edges = [[0, 1], [2, 1], [3, 2], [3, 4]] return = 1
If node 3 is chosen as the root, the desired directions are 3 -> 2 -> 1 -> 0 and 3 -> 4. Only the edge 0 -> 1 must be reversed.
n = 4 edges = [[2, 0], [0, 1], [2, 3]] return = 0
Choosing node 2 as the root already makes every edge point away from the root, so no reversals are needed.
The source thread did not provide explicit numeric bounds.
- The underlying undirected graph formed by
edgesis a tree. edges.length = n - 1.- Each input edge gives the current direction of exactly one tree edge.
- Jump Game with Prime-3 StepsOA · Seen Jun 2026
- Total Palindrome Substring CostOA · Seen Jun 2026
- Earliest Time All Users Are ConnectedPHONE SCREEN · Seen May 2026
- Tournament Rounds by RankPHONE SCREEN · Seen May 2026
- Farthest Seat AssignmentONSITE INTERVIEW · Seen May 2026
- Convex Function MinimizationPHONE SCREEN · Seen May 2026
- Maximal Square AreaONSITE INTERVIEW · Seen May 2026
- First Unique IP Hitting the ServerPHONE SCREEN · Seen May 2026
public int minEdgeReversalsForRoot(int n, int[][] edges) {
// write your code here
}