Is there a name for the "tree" aproach to listing things?
Your technique is known as exhaustive search (with some pruning). It consists of trying all possibilities. In many cases, the way to implement exhaustive search is using a search tree. There are several possible optimizations:


Tree pruning algorithms like A* avoid going through paths which are known to be suboptimal.
Greedy algorithms, when they apply, are able to make the correct choice at each step without going over all possibilities.
Dynamic programming corresponds, morally, to exploring a DAG instead of a tree, thus reducing the number of vertices explored. (The actual details are rather different.)