1 réponse
Ce serait pas mal de commencer ton message par "bonjour" et de le finir par "merci".
Ensuite sans préciser ce que tu stockes dans ton arbre binaire et comment tu l'organises, la question n'a pas de sens.
Donc en admettant que tu veuilles lire ton fichier mot à mot et classer ces mots dans un arbre binaire, voilà à quoi ça pourrait ressembler :
Et si la question est "où est l'arbre binaire", eh bien c'est tout simplement "std::set<...>" qui en est un (arbre rouge noir).
https://fr.wikipedia.org/wiki/Arbre_bicolore
Si on utilise ce fichier d'entrée (toto.txt) :
... voici ce que donne le programme :
Tu noteras que les doublons sont supprimés (ils correspondent à la même feuille) et les mots apparaissent dans l'ordre lexicographique (donc c'est bien la preuve que l'arbre maintenu par std::set est ordonné).
Bonne chance
Ensuite sans préciser ce que tu stockes dans ton arbre binaire et comment tu l'organises, la question n'a pas de sens.
Donc en admettant que tu veuilles lire ton fichier mot à mot et classer ces mots dans un arbre binaire, voilà à quoi ça pourrait ressembler :
#include <fstream> #include <iostream> #include <set> #include <string> #include <cstdlib> int main(int argc, char ** argv) { const char * filename; std::string word; std::set<std::string> words; if (argc != 2) { std::cerr << "Usage: " << argv[0] << " filename" << std::endl; return EXIT_FAILURE; } filename = argv[1]; std::ifstream ifs(filename); if (!ifs) { std::cerr << argv[0] << ": Can't read " << filename << std::endl; return EXIT_FAILURE; } while (ifs.good()) { ifs >> word; if (!ifs.fail()) { words.insert(word); } } { std::set<std::string>::const_iterator words_it (words.begin()), words_end(words.end()); for (; words_it != words_end; ++words_it) { std::cout << *words_it << std::endl; } } return EXIT_SUCCESS; }
Et si la question est "où est l'arbre binaire", eh bien c'est tout simplement "std::set<...>" qui en est un (arbre rouge noir).
https://fr.wikipedia.org/wiki/Arbre_bicolore
Si on utilise ce fichier d'entrée (toto.txt) :
aaa bbb aaa ccc dd eee ddd aa
... voici ce que donne le programme :
(mando@silk) (~) $ g++ toto.cpp && ./a.out toto.txt aa aaa bbb ccc dd ddd eee
Tu noteras que les doublons sont supprimés (ils correspondent à la même feuille) et les mots apparaissent dans l'ordre lexicographique (donc c'est bien la preuve que l'arbre maintenu par std::set est ordonné).
Bonne chance