language: C++ 4.7.2 (gcc-4.7.2)
date: 920 days 16 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/**
 * \file BST.inl
 * \brief Le code des op�rateurs du laboratoire #8
 * \author Abder
 * \version 0.1
 * \date septembre 2009
 *
 * Impl�mentation des m�thodes de parcours d'un arbre g�n�rique  
 *
 */
 
namespace Arbre_Lab8
{
 
/**
 * \fn Arbre<E>:: Arbre(E *tabS, int debut, int fin, E **ptr, int &card)
 *
 * \param[in] tabS Le tableau contenant le fruit de la visite sym�trique
 * \param[in] debut L'indice de début de tabS
 * \param[in] fin L'indice de fin de tabS
 * \param[in] ptr Le tableau contenant le fruit de la visite au p�re
 * \param[in] card La cardinalité de tabP
 *
 */
template<typename E>
Arbre<E>::Arbre(E *tabS, int debut, int fin, E **ptr, int &card) throw (std::bad_alloc)
{
   racine = _auxPereSym(tabS, debut, fin, ptr, card);
}
 
template<typename E>
void Arbre<E>::parcourirPreOrdre(void(* traitement)(E &iteme)) const
{
 
}
 
template<typename E>
void Arbre<E>::_auxPreOrdre(Noeud* noeud, void(* traitement)(E&)) const
{
   traitement;
   if (noeud->gauche != 0)
      _auxPreOrdre(noeud->gauche, _auxPreOrdre(traitement));
 
   if (noeud->droite != 0)
      _auxPreOrdre(noeud->droite, _auxEnOrdre(traitement));
}
 
//template<typename E>
//void Arbre<E>::_auxEnOrdre(Noeud* noeud, std::vector<E>& vNoeuds) const
//{
//   if (noeud->gauche != 0)
//      _auxEnOrdre(noeud->gauche, vNoeuds);
//
//   vNoeuds.push_back(noeud->data);
//
//   if (noeud->droite != 0)
//      _auxEnOrdre(noeud->droite, vNoeuds);
//}
 
//� compl�ter par toutes les m�thodes demand�es
 
template<typename E>
void Arbre<E>::_auxDetruire(Noeud * &t)
{
   if (t->gauche != 0)
      _auxDetruire(t->gauche);
 
   if (t->droite != 0)
      _auxDetruire(t->droite);
 
   delete t;
 
}
 
template<typename E>
Noeud * Arbre<E>::_auxPereSym(E *tabS, int debut, int fin, E **ptr, int &card) throw (std::bad_alloc)
{
   return new Noeud(tabS[0]);
}
 
}//Fin du namespace