private int longestRoadDFS(Node current, Node parent,
	                           Set<Node> visitedNodes,
	                           Map<Coordinate, Node> nodeMap,
	                           String playerName) {
	    int maxLength = 0;
	    	    
	    // Add the current node to the set of visited nodes
	    visitedNodes.add(current);
	    
	    // Look at all of the unvisited neighbors of the current node
	    for (Coordinate neighborCoord : current.getNeighbors()) {
	        Node neighbor = nodeMap.get(neighborCoord);
	        
	        // Make sure the neighbor does not have a settlement from
            // another player
            Settlement settlement = nodeSet.get(neighborCoord).getSettlement();
            
            if (settlement != null && 
                !settlement.getOwner().getUsername().equals(playerName)) {
                
                maxLength = Math.max(maxLength, 1);
                
            } else if (!visitedNodes.contains(neighbor)) {
	            maxLength = Math.max(maxLength,
	                                 longestRoadDFS(neighbor, current, 
	                                                visitedNodes,
	                                                nodeMap, playerName) + 1);
	        } else if (neighbor != parent) {
	            // The neighbor must be connected to the current node by a
	            // back edge, so the maximum length is at least 1
	            maxLength = Math.max(maxLength,  1);
	        }
	    }
	    
	    return maxLength;
	}