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 :
- 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);
- la fonction
show ()parcours toutes les branches de l’arbre; - la fonction
add (), qui ne contient qu’un paramètre (la valeur à insérer dans l’arbre), doit avoir le comportement suivant :- s’il n’y a pas de fils gauche, alors on insère dans ce dernier;
- s’il n’y a pas de fils droit, alors on insère dans ce dernier;
- sinon on explore aléatoirement (
rand () % 2) le sous arbre de gauche, ou de droite.