K (ngn/k), 9796 bytes
` 0:4_'{r:o@x,(y@1)y[1]," ";(,x,(*y),"-- ",*z),/$[z@1;("+|"r/:-1_z@1),"L "r/:-1#z@1;""]}["";" ";]@ Quite a shame that this took so long, but I'm glad that I stuck with the problem.
Recursive function which prints each line of the tree separately. ngn/k's json parser is used to get the array.
-6 bytes from coltim.
-1 from ngn.