ClearAll[enum];
enum[labels_List] := Module[{n = Length@labels, res = {}},
If[Length@labels == 1, AppendTo[res, labels[[1]]],
Do[AppendTo[res, {left, right}],
{i, 2, n},
{left, enum@Take[labels, {1, i - 1}]},
{right, enum@Take[labels, {i, n}]}]];
res];
enum@{"A", "B", "C", "D", "E"}