Post-order DFS: compute answers bottom-up from leaves to root.
LC 337 (House Robber III), LC 124 (Binary Tree Max Path Sum), LC 543 (Diameter).
Key Insight: In tree DP we don't have a 1D/2D table.
Instead each node stores a small tuple of DP states.
House Robber III — for each node keep two values: rob = max if we rob this node (cannot rob its children) skip = max if we skip this node (children may or may not be robbed) rob(v) = v.val + skip(L) + skip(R) skip(v) = max(rob(L),skip(L)) + max(rob(R),skip(R))
Processing order is post-order: children are fully solved before the parent.