I am not sure if the title makes a whole lot of sense, but what I am trying to do is generate all non-isomorphic trees that obey the following:
1) Each vertex (including leaves) has one of two labels (A or B)
2) Those that are labeled B may have a maximum degree of 3 (at most three neighbors)
3) Those that are labeled A may have a maximum degree of 2 (at most two neighbors)
A few examples (Trees of Sizes (n)=4 and 5, with the number of A labeled vertexes = n-1 )
Size 4 : Size 5 B-A-A-A B-A-A-A-A A-B-A-A A-B-A-A-A A-A-B-A-A A-B-A A-B-A-A | | A A
I should note also that although my examples are of #A labeled vertexes=n-1, I am interesting in generating all of the tree with #A=n, n-1, n-2, n-3, n-4, ...n-k as well.
I feel like something like this has to have been enumerated before, but I am not sure what to call these type of trees, and as such I have been having a hard time finding other similar work. I do know that this is similar to the counting of "Boron Trees" ( OEIS A0514519 ) but its not quite right.
EDIT I forgot to mention that I have asked a similar question over at the general stack-overflow webpage, but haven't heard anything yet (link below). Currently, my attempts to generate the non-isomorphic structures is performed through a "stupid" monte-carlo technique: generate a random tree with a given number of A and B types, compare to all other trees generated, delete if isomorphic to any of them (this is ~N^2 computations, it can be made trivially parallel, but it requires lots of threads to be efficient for trees larger than 12. Also it isn't strictly guaranteed to give me all of the structures).