请教一个图的深度优先搜索问题

请教一个图的深度优先搜索问题

startstate = problem.getStartState()    # 获取最初状态

  stack = util.Stack()           # stack 是一个堆栈
  visited = {}
  stack.push(startstate)

  """
  DFS of Graph
  """
  if problem.isGoalState(startstate) == False:
    visited[startstate] = True                                  # 访问标志
    fringe = problem.getSuccessors(startstate)      # 获取后续状态
    #print fringe, "\n"

    while fringe:
      f = fringe[0]
      fringe.remove(fringe[0])                                   # remove-first
      
      if problem.isGoalState(f):                                 # 判断是否目标节点
        break

      stack.push(f)

      if f not in visited:
        visited[f] = True
        expandf = problem.getSuccessors(f)
        if expandf == []:
          stack.pop()
        fringe = expandf + fringe                                # 加入状态集


请问这样为什么有问题?
什么问题?
路径搜索问题
主要的问题是深度找到回到原来的或走错时回溯就出问题