public TreeMap<Integer, Integer> colorieur(TreeMap<Integer, Integer> couleur, TreeMap<Integer, TreeSet<Integer>> couleurPossible )
	{
		if(couleurPossible.isEmpty())
		{
			return couleur;
		}
		else
		{
			Entry<Integer, TreeSet<Integer>> entry  = couleurPossible.firstEntry();
			TreeSet<Integer> tree = entry.getValue();
			Integer noeudCourant = entry.getKey();
			
			TreeMap<Integer, TreeSet<Integer>> cloneCouleurPossible = (TreeMap<Integer, TreeSet<Integer>>) couleurPossible.clone();
			TreeMap<Integer, Integer> cloneCouleur = (TreeMap<Integer, Integer>) couleur.clone();
			for(Integer couleurPotentiel : entry.getValue())
			{
				couleur.put(noeudCourant, couleurPotentiel);
				cloneCouleurPossible.remove(noeudCourant);
				
				// retire les couleurs non permises
				for(Integer i : noeuds.get(noeudCourant))
				{
					TreeSet<Integer> couleurPourNoeud = cloneCouleurPossible.get(i);
					if(couleurPourNoeud != null)
					{
						couleurPourNoeud.remove(couleurPotentiel);
						cloneCouleurPossible.put(i,couleurPourNoeud);
					}
				}				
				
				cloneCouleur.put(noeudCourant, couleurPotentiel);
				
				TreeMap<Integer, Integer> resultat = colorieur(cloneCouleur, cloneCouleurPossible);
				if(resultat != null)
				{
					return resultat;
				}
				else
				{
					cloneCouleur.remove(noeudCourant);
				}
				
			}
		}
		
		return null;
	}