TreeGraph[TreeList_] := Module[{link, tree, tg, rt, tt, d = 0.6},
link[b_, t_] := Module[{a = 0.125, s, p} ,
s = {-1, -a/2} + b;
p = {{0, 0}, {1, 0}, {1, a}, {0, a}, {0, 0}} + {s, s, s, s, s};
{{Hue[0.5], Polygon[p]}, Line[p],
Text[t, {1/2, 2a} + s], {GrayLevel[1], Point[{0, 3a} + s]}}];
tree[n_] := {{Max[d,
If[Length[TreeList[[n]]] == 3, d, 0] +
Plus @@ (tree[#][[1, 1]] & /@
Flatten[ Position[TreeList, {n, __}]])], n,
TreeList[[n]]} // Flatten,
tree /@ Flatten[ Position[TreeList, {n, __}]]} ;
tg[t_, b_] :=
Module[{bb = b, bbb, a = t[[1, 1]], aa, tt = Last[t], lst = {}},
{link[bb,
StringJoin["C", First[t][[2]] // ToString, "=",
First[t][[4]] // ToString]],
bb -= {2, a/2}; aa = If[tt == {}, 0, tt[[1, 1, 1]] ]/2;
tg[#, aa = #[[1, 1]]/2; bbb = bb += {0, aa};
lst = {lst, Line[{b - {1, 0}, bb}]}; bb += {0, aa}; bbb] & /@
tt, lst, If[Length[t[[1]]] == 5,
bb += {0, d/2}; {Line[{b - {1, 0}, bb}],
Text[StringJoin["x", First[t][[2]] // ToString],
bb - {.2, 0}]}, {}]}];
rt = Position[TreeList, {Null, __}] // First // First;
tt = tree[rt];
{tg[tt, {0, 0}], Line[{{0, 0}, {1, 0}}]}]