Subtree DP works when the answer depends only on descendants. Heavy-light decomposition handles path updates and queries efficiently. Centroid decomposition counts or aggregates over all paths without updates. If you need to update the tree dynamically, centroid decomposition alone will not work because the decomposition is static.
Combine it with segment trees or other structures for updates. For pure path counting or static distance queries, centroid decomposition is often the cleanest solution. It is clean when applied correctly.