How can I get all representations of an n-ary tree that completely "cover" the tree? I have an n-ary tree and I want to get all possible representations of the tree that "cover" (for lack of a better term) the tree. Here's what I mean by cover:

Suppose we have the following tree

        1
     /    \
    2      3
   / \    /|\
  4   6  5 7 8
      |
      9


I want to somehow obtain the following:


1
2, 3
2, 5, 7, 8
4, 6, 3
4, 6, 5, 7, 8 
4, 9, 3
4, 9, 5, 7, 8


As you can see 1 completely covers the tree because all leaves are underneath it. Similarly 2, 3 covers the entire tree because all leaves are underneath them. This goes for all of them until finally we get to 4, 9, 5, 7, 8 which covers the entire tree because all leaves are underneath (or are them).

Is there an algorithm to do this or a modification of a classic search algorithm that will produce this?
Let $T$ be a tree with root $r$, and let the children of $r$ be $r_1,\ldots,r_d$. Then every minimal cover of $T$ either consists of $r$, or is a union of minimal covers of $r_1,\ldots,r_d$; if $r$ is a leaf then the second option doesn't exist. You can easily convert this to a recursive algorithm that lists all minimal covers.