https://llego.dev/posts/implementing-depth-first-search-python-traverse-binary-tree/