input: Write a function to find the path from start node to end node in a graph.
  assert find_path('A', 'D', {'A': ['B', 'C'], 'B': ['D'], 'C': ['D'], 'D': []}) == ['A', 'B', 'D']
  assert find_path('X', 'Z', {'X': ['Y'], 'Y': ['Z'], 'Z': []}) == ['X', 'Y', 'Z']
  assert find_path('1', '3', {'1': ['2'], '2': ['3'], '3': ['4'], '4': []}) == ['1', '2', '3']
output: def find_path(start, end, graph):
      def dfs(current, path):
          if current == end:
              return path
          for neighbor in graph.get(current, []):
              result = dfs(neighbor, path + [neighbor])
              if result:
                  return result
          return None
  
      return dfs(start, [start])