##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
A tiling must cover every vertex with either a -node singleton or a -node edge tile. This is exactly a perfect matching of the "cover" type — unmatched vertices are implicitly covered by -node tiles.
Ignore the extra edges for a moment. Root the tree at and define two states for each node :
For a leaf:
For an internal node with children set :
: is matched upward → no child matched to . Every child must be free:
: is free → either singleton or matched to exactly one child:
The tree answer is (root has no parent).
Check your understanding: derive these on a path of length and verify the tilings count by hand.