J'ai essayé d'implémenter l'arborescence de recherche binaire en utilisant des classes. Chaque fois que j'essaie de compiler et d'exécuter le programme, le programme se termine. J'ai essayé beaucoup de choses comme faire le * root public pour y accéder en main afin que je puisse mettre à jour la racine, mais de toute façon il devient nul à chaque fois. L'aide sera appréciée. Ceci est pour mon projet d'université.Arbre de recherche binaire utilisant des classes
#include <iostream>
using namespace std;
class tree;
class Node {
friend class tree;
private:
Node *lchild,*rchild;
int data;
public:
Node (int x) {
data = x;
lchild = rchild = NULL;
}
};
class tree {
protected:
Node* root;
void inorder(const Node* root)const;
public:
tree() {
root = NULL;
}
bool insert(int item);
void inorder() const {inorder(root);};
Node* getroot() {
return root;
}
};
bool tree :: insert(int item) {
if (root == NULL) {
Node *temp = new Node(item);
root = temp;
return (bool) root;
}
if (item < root -> data) {
insert(item);
}
if (item > root -> data) {
insert(item);
}
else if (item == root -> data) {
cout<<"Duplicate";
exit (0);
}
return (bool) root;
}
void tree :: inorder(const Node *root)const {
if (root != NULL) {
inorder(root -> lchild);
cout<<root -> data;
inorder(root -> rchild);
}
}
int main()
{
tree obj1;
obj1.insert(3);
//obj1.insert(4);
obj1.insert(1);
//obj1.insert(5);
obj1.inorder();
}
Pourquoi tree :: insert a-t-il un paramètre racine? –
Pourquoi avez-vous 'root1' et' root' simultanément et en faisant des choses séparées? –
@ manni66 J'ai essayé de le faire parce que j'étais en train de le convertir de C en C++ et j'ai pensé que cela aiderait à la récursivité. –