Number of Ways to Assign Edge Weights II

Solution
class Solution:
    def assignEdgeWeights(self, edges: List[List[int]], queries: List[List[int]]) -> List[int]:
        lca = LCA(edges)
        MOD = 10**9 + 7
        ans = []
        
        # Precompute powers of 2 for speed
        powers = [1] * (lca.n + 1)
        for i in range(1, lca.n + 1):
            powers[i] = (powers[i-1] * 2) % MOD

Time Complexity

O(n log n + m log n)

Space Complexity

O(n log n)