docs: def iterdfs(self, start, end=None, forward=True):
          """
          Collecting nodes in some depth first traversal.
  
          The forward parameter specifies whether it is a forward or backward
          traversal.
          """
          visited, stack = set([start]), deque([start])
  
          if forward:
              get_edges = self.out_edges
              get_next = self.tail
          else:
              get_edges = self.inc_edges
              get_next = self.head
  
          while stack:
              curr_node = stack.pop()
              yield curr_node
              if curr_node == end:
                  break
              for edge in sorted(get_edges(curr_node)):
                  tail = get_next(edge)
                  if tail not in visited:
                      visited.add(tail)
                      stack.append(tail)