Each node is visited exactly once during DFS. At each node, you loop through its children to aggregate values. Total work: where is the number of nodes. Each edge is traversed twice (down and back up), giving edge traversals.
Tree DP is fast. No repeated subproblems like in grid DP. The tree structure guarantees linear time. This makes tree DP practical even for large trees with millions of nodes.
Space complexity is for the data structures used.