A set of generic functions for traversing tree-like data structures recursively and/or iteratively,