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}}]}]