You can do at least some of this with the graph-drawing facilities. Probably, use of color classes
would facilitate greater automation. However, I'm not immediately sure how to make that work and the manual is extremely vague on what is possible and how. (Or I just don't understand its approach - I admit to finding the graph-drawing stuff almost entirely opaque.)
Here's an example:
\RequirePackage{luatex85}
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{graphdrawing,graphs}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}
[>=, every node/.style={rectangle, draw, anchor=west, minimum size=0.75cm}, line width=1pt]
\graph [tree layout, simple, grow'=right, level sep=0.5in, sibling distance=0.5in]
{
Root -> {
a ->[draw=cyan] {d, e, f},
b ->[draw=blue] {g, h},
c ->[draw=green] {i -> {l, m}, j, k}
};
i -> [bend left, green] l;
i -> [bend right, green] m;
Root -> [bend left, cyan] a;
Root -> [blue] b;
Root -> [bend right, green] c;
a -> [bend left, cyan] d;
a -> [bend right, cyan] f;
b -> [bend left, blue] g;
b -> [bend right, blue] h;
c -> [bend left, green] i;
c -> [bend right, green] k;
};
\end{tikzpicture}
\end{document}

Personally, I wouldn't bother with the graph-drawing stuff for drawing trees. If you need arbitrary graphs, it is different - options are very limited. But trees have lots of support from specialised packages, many of which support very concise syntax, albeit not the same syntax as the graph-drawing stuff provided by TikZ.
For example, with Forest, I can define a style - tracks
, say - which allows me to write
\begin{forest}
tracks
[Root
[a, colour me down=cyan!50!blue [d][e][f] ]
[b, colour me down=blue [g][h] ]
[c, colour me down=green!75!black [i [l][m] ][j][k] ]
]
\end{forest}
to produce

which is particularly useful if you need to use a style for many trees. The colouring could be built into the style, but I assumed this was more likely to vary than other elements, so just used a simple convenience wrapper for use in specifying colouring for a particular tree.
In this case, the colouring is specified for each of the root's children and automatically propagated to each child's descendants.
\documentclass[tikz,border=10pt]{standalone}
\usepackage{forest}
\usetikzlibrary{calc}
\forestset{
tracks/.style={
for tree={
grow'=0,
l sep'+=50pt,
s sep'+=30pt,
font=\bfseries\sffamily,
edge path'={
(!u.parent anchor) -- ($(.child anchor)-(20pt,0pt)$) -- (.child anchor)
},
edge+={ultra thick, rounded corners}
},
before typesetting nodes={
for descendants={
edge label/.process={ Ow {content} {node [above, font=\bfseries\sffamily, anchor=south, pos=.75] {##1}} },
content=,
shape=coordinate,
},
where={>Ow+P {n children} {isodd(##1)} }{
calign=child edge,
calign primary child/.process={ Ow+n {n children} {(##1+1)/2} }
}{}
},
},
colour me/.style={
#1,
edge+={#1},
},
colour me down/.style={
for tree={colour me=#1},
}
}
\begin{document}
\begin{forest}
tracks
[Root
[a, colour me down=cyan!50!blue [d][e][f] ]
[b, colour me down=blue [g][h] ]
[c, colour me down=green!75!black [i [l][m] ][j][k] ]
]
\end{forest}
\end{document}