There is a moment in the trees track where a large fraction of the material collapses into one idea, and after that the problems stop feeling individually difficult. The idea is that most tree problems are the same six-line recursion with a different combine step.
The skeleton
Recurse both sides, then combine. Everything below is that skeleton with BASE and COMBINE filled in.
Maximum depth
Balanced check
Return the height, or −1 as a sentinel meaning 'already unbalanced'. Propagating the failure through the return value avoids computing heights twice.
Diameter
Here the return value and the answer are different things, and that is the second idea worth internalising. Each call returns the height, while updating a running best with left + right — the path through this node. A node's best path is not what its parent needs to know.
When the answer at a node is not the value the parent needs, return the parent's value and accumulate the answer on the side. Diameter, maximum path sum and longest consecutive sequence are all this.
Maximum path sum
Same structure again. The return value is the best downward path — you may only extend through one child. The accumulated answer may bend at this node and use both.
When it is not post-order
Some tree problems genuinely need information flowing downward — validate BST needs the interval from ancestors; path-sum-from-root needs the running total. Those are pre-order with a parameter rather than post-order with a return value, and they are the smaller family.
The diagnostic question is short: does this node's answer depend on what is above it, or only on what is below it? Below only means post-order with a return value. Above means pass state down. Both means both, and there are only a handful of those.
Reading about a pattern is not the same as producing it under time pressure. The problems that drill this are in the curriculum, in order.