add depth first traversals