After some hours of hard thinking, I came up with this explanation/proof for the calculation of p. Hope it is useful and to get feedback in case I’m mistaken.
We want to count the number of vertices with one child in all trees of n + 1 vertices (n edges). Let’s call this number p’.
Imagine to lay out all the C_n trees and label each tree’s vertices from 0 to n, top-to-bottom, left-to-right (the root is always 0).
To find p’, you could fix a tree, count the number of vertices with one child in this tree, and then sum over all the trees. This doesn’t lead to an easy closed formula.
Instead, fix a vertex v in [1…n] and count how many trees, among the C_n, are such that parent[v] has only one child v. Summing over all v’s will give us p’.
For each v, removing (parent[v], v) from the tree by the operation explained above, gives us a n-vertice tree. There are exactly C_{n-1} such trees and they must all appear in our original layout (of C_n trees).
Furthermore, there is no double-counting: otherwise there would be v1, v2 in [1…n] from trees T1, T2 resp., such that removing (parent[v1], v1) and (parent[v2], v2) leads to the same tree, except for the labels. This means T1=T2 would appear twice in out original layout, which is impossible by construction.
There are n vertices, each associated with C_{n-1} trees, therefore p’ = n * C_{n-1}. For p, just let n = k - 1 and substitute.