code: def depth_first_search(graph, root_node=None):
      
      ordering, parent_lookup, children_lookup = depth_first_search_with_parent_data(graph, root_node)
      return ordering
docs: Searches through the tree in a breadth-first fashion.
          If root_node is None, an arbitrary node will be used as the root.
          If root_node is not None, it will be used as the root for the search tree.
          Returns a list of nodes, in the order that they were reached.