code: def dependency_tree(installed_keys, root_key):
      
      dependencies = set()
      queue = collections.deque()
  
      if root_key in installed_keys:
          dep = installed_keys[root_key]
          queue.append(dep)
  
      while queue:
          v = queue.popleft()
          key = key_from_req(v)
          if key in dependencies:
              continue
  
          dependencies.add(key)
  
          for dep_specifier in v.requires():
              dep_name = key_from_req(dep_specifier)
              if dep_name in installed_keys:
                  dep = installed_keys[dep_name]
  
                  if dep_specifier.specifier.contains(dep.version):
                      queue.append(dep)
  
      return dependencies
docs: Calculate the dependency tree for the package `root_key` and return
      a collection of all its dependencies.  Uses a DFS traversal algorithm.
  
      `installed_keys` should be a {key: requirement} mapping, e.g.
          {'django': from_line('django==1.8')}
      `root_key` should be the key to return the dependency tree for.