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.