f[list_, elems_] := Map[Prepend[list, #] &, elems]
g[list_, elem_] := Flatten[Map[f[#, elem] &, list], 1]

Nest[g[#, {0, 1}] &, {{}}, 5]
でどう?