So for my second try at an algorithm, I eventually got to something approximating a DFS, except that I would generate child nodes as needed as I was traversing, and then once they were counted, I could abandon them as the traversal continued breadth-wise. But! (3/?)