public List <GenericNode> cheminParcoursArbre(GenericNode N, GenericNode N0) { List <GenericNode> _LN = new List <GenericNode>(); if (N != null) { _LN.Add(N); while (N != N0) { N = N.GetNoeud_Parent(); _LN.Insert(0, N); // On insère en position 1 } } return(_LN); }
private void button_Dijkstra_Click(object sender, EventArgs e) { affichageCheminListBox.Items.Clear(); commentaireTextBox.Clear(); string message = "ERREUR \r\n"; try { numinitial = Convert.ToInt32(noeud_debut_textbox.Text); } catch { message += ("Vous n'avez pas entré de noeud initial \r\n"); } try { numfinal = Convert.ToInt32(noeud_fin_textbox.Text); } catch { message += ("Vous n'avez pas entré de noeud final \r\n"); } if (message == "ERREUR \r\n") { g = new SearchTree(); N0 = new Node2(); N0.numero = numinitial; L_Ouverts = new List <GenericNode>(); L_Fermes = new List <GenericNode>(); EnsembleOuvert = new List <List <GenericNode> >(); EnsembleFermes = new List <List <GenericNode> >(); N0List = new List <GenericNode>(); // Le noeud passé en paramètre est supposé être le noeud initial GenericNode N = N0; N0List.Add(N0); L_Ouverts.Add(N0); EnsembleOuvert.Add(N0List); // tant que le noeud n'est pas terminal et que ouverts n'est pas vide while (L_Ouverts.Count != 0 && N.EndState() == false) { // Le meilleur noeud des ouverts est supposé placé en tête de liste // On le place dans les fermés L_Fermes.Add(N); L_Ouverts.Remove(N); GenericNode solu = g.stepSolutionAEtoile(N, L_Ouverts, L_Fermes); List <GenericNode> listOuvert = new List <GenericNode>(L_Ouverts); EnsembleOuvert.Add(listOuvert); List <GenericNode> listFermes = new List <GenericNode>(L_Fermes); EnsembleFermes.Add(listFermes); N = solu; } // renvois les noeuds parents jusqu'a avoir l'arbre total methode du SearchTree qui est passé en ligne de code directement. List <GenericNode> _LN = new List <GenericNode>(); if (N != null) { _LN.Add(N); while (N != N0) { N = N.GetNoeud_Parent(); _LN.Insert(0, N); // On insère en position 1 } } solution = _LN; g.PrintEmptyTree(treeViewEtudiant); } else { MessageBox.Show(message); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////// à partir de là nous pouvons commencer à comparer les ensembles. ////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////// fin des tests sur les ensembles ouverts et fermés //////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// /// affichage de l'arbre des solutions et du chemin le plus court à condition que l'étudiant ait entré des ensembles ouverts et fermés }