Donc, mon code est ci-dessous. Je ne reçois aucune erreur et tout se passe bien dans le nœud. Mais en fonction de mes instructions de débogage Chaque fois que quelque chose est inséré c'est la racine. Je ne suis pas sûr que ce soit juste. Mais selon le fichier de sortie pour l'assignation, mes réponses sont différentes quand il s'agit de la hauteur de l'arbre, les traversées, et j'ai juste des problèmes avec la fonction de comptage des feuilles. Une autre histoire cependant. En fonction des instructions de débogage, il semble que tout se passe comme prévu. Mais je me dis que je pourrais avoir besoin de nouveaux yeux. Je ne vois pas comment mes traversées pourraient changer du tout puisque c'est vraiment une question d'endroit où je suis en train de traiter le nœud qui devrait affecter l'Inorder, la pré-commande et la post-commande.C++ Insérer un arbre de recherche binaire via la récursivité
template <class T>
void BT<T>::insert(const T& item)
{
Node<T>* newNode;
newNode = new Node<T>(item);
insert(root, newNode);
}
template <class T>
void BT<T>::insert(struct Node<T> *&root, struct Node<T> *newNode)
{
if (root == NULL)
{
cout << "Root Found" << newNode->data << endl;
root = newNode;
}
else
{
if (newNode->data < root->data)
{
insert(root->left, newNode);
cout << "Inserting Left" << newNode-> data << endl;
}
else
{
insert(root->right, newNode);
cout << "Inserting Right" << newNode->data << endl;
}
}
}
Ma fonction de hauteur est la suivante juste au cas où mon insertion est réellement bonne.
template <class T>
int BT<T>::height() const
{
return height(root);
}
template <class T>
int BT<T>::height(Node<T>* root) const
{
if (root == NULL)
return 0;
else
{
if (height(root->right) > height(root->left))
return 1 + height(root-> right);
return 1 + height(root->left);
}
}
si vous pensez que mon insert est correct? Je veux dire sur la base de mes impressions de débogage ... et physiquement écrire cela ... tout semble correspondre. – Doug
Oui, ta taille m'a donné la même valeur que la mienne. Il a l'air plus propre et est plus efficace mais je l'apprécie. – Doug
Une petite correction, si (root = NULL) doit être root == NULL. – syaz