# [K (ngn/k)], 97 bytes
` 0:4_'{r:o@x,(y@1)," ";(,x,(*y),"-- ",*z),/$[z@1;("+|"r/:-1_z@1),"L "r/:-1#z@1;""]}["";" ";]@
[Try it online!][ngn-119e2d57]
[K (ngn/k)]: https://codeberg.org/ngn/k
[ngn-119e2d57]: https://ngn.codeberg.page/k#eJx1jUFugzAURPc+hfVbKSQ1oUhdwaIcoDcgKLGJATdgkIG2IeXuwTGpFYnu/vyZeZMFB/wavO1XFxXU0Q9xzpG/JoAxhtAhk96cJ+m6GMhmWBPvOR4iP3Tg5ReUF7j+frjlP7CRT9oFSMYYIAQNSSKELmOGD5/vGOIdtF1fNTsgcZIA0tsAD36nennS/nQzRWVazKLkNDM98qCMtlH9WSRv71QhLadv1dK7rFNaLhqC3Uf+HToJmR/raq5XQnJlYAZBpaj+4Mc6n682LSTtB65s8rsQTcM7O6ifXzznHWUln3spZYzm3IYAoSs+jIpa
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.