M3103 – TP4 Exercice 1

Reprenez la classe CNode de l’exercice précédent, renommez les données membres m_Prec et m_Next en respectivement m_LC (left child) et m_RC (right child).
Mettez à jour les accesseurs et modifieurs correspondants.

En vous inspirant de la classe CList, créez la classe CRDTree (arbre aléatoire – Random Tree), elle aussi générique.

Les modifications sont les suivantes :

  1. le constructeur contient un paramètre (la donnée), crée un smart pointer contenant cette donnée et initialise la racine à cette adresse (ie, on n’a plus de tête fictive);
  2. la fonction show () parcours toutes les branches de l’arbre;
  3. la fonction add (), qui ne contient qu’un paramètre (la valeur à insérer dans l’arbre), doit avoir le comportement suivant :
    1. s’il n’y a pas de fils gauche, alors on insère dans ce dernier;
    2. s’il n’y a pas de fils droit, alors on insère dans ce dernier;
    3. sinon on explore aléatoirement (rand () % 2) le sous arbre de gauche, ou de droite.