code: def values_at(self, depth):
          
          if depth < 1:
              yield self
          else:
              for dict_tree in self.values():
                  for value in dict_tree.values_at(depth - 1):
                      yield value
docs: Iterate values at specified depth.