I'm saving here since I am about to add some features (e.g., will make the tree nodes be their own class, and also export a file suitable for image file construction with GraphViz) and I'm not sure if I'll break anything along the way.