First decision: Does the problem need to compute something for each node based on its subtree, or collect information?
If you are counting nodes, summing values, or finding max depth from one root, simple traversal works. One DFS, collect results bottom-up, done.
If you need to combine subtree answers to make decisions (like max matching, min vertex cover, independent set), you need DP. You are not collecting, you are choosing between options.
Example: Subtree sizes = traversal. Max independent set = DP. The telling word is 'max' or 'min' with choices.