input: Write a function to perform Depth First Traversal on a graph.
  assert dfs({'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': ['F'], 'F': []}, 'A', []) == ['A', 'B', 'D', 'E', 'F', 'C']
  assert dfs({'A': ['B'], 'B': ['C'], 'C': ['D'], 'D': []}, 'A', []) == ['A', 'B', 'C', 'D']
  assert dfs({'A': ['B', 'C'], 'B': [], 'C': []}, 'A', []) == ['A', 'B', 'C']
output: def dfs(graph, start, visited):
      visited.append(start)
      for neighbor in graph[start]:
          if neighbor not in visited:
              dfs(graph, neighbor, visited)
      return visited