J'ai déjà débogué le code et n'ai trouvé aucune erreur. Le code ci-dessous n'imprime pas toutes les données de l'arbre de recherche binaire (BST). Seul le nœud racine et les deux derniers nœuds sont affichés dans la traversée d'ordre.sortie incorrecte de l'arbre de recherche binaire
struct node{
int key;
node *left;
node *right;
};
node* newNode(int data){
node *ptr=new node;
ptr->key=data;
ptr->left=ptr->right=NULL;
return ptr;
}
node* insert_node(node* root,int data){
if(root==NULL){
root=newNode(data);
}else if(data<=root->key){
root->left=newNode(data);
}else{
root->right=newNode(data);
}
return root;
}
void inorder(node* root){
if(root==NULL)
return;
inorder(root->left);
cout<<root->key<<" ";
inorder(root->right);
}
int main(){
node *root=NULL;
root=insert_node(root,10);
root=insert_node(root,12);
root=insert_node(root,15);
root=insert_node(root,1);
root=insert_node(root,20);
inorder(root);
return 0;
}
Supposons que vous insériez ** first ** un noeud avec 'data = 10' (qui agira comme une racine). Ensuite, vous insérez un noeud avec 'data = 8', donc son inséré à gauche, à droite? Ok, maintenant vous insérez un noeud avec 'data = 6'. Votre noeud racine reste le même, donc le noeud avec 'data = 6' remplace le noeud avec' data = 8', si je ne me trompe pas. En outre, cela crée une fuite de mémoire, puisque le nœud avec 'data = 8' n'est pas supprimé et devient inaccessible – Fureeish
* J'ai déjà débogué le code et n'ai pas trouvé d'erreur * - Si vous n'avez trouvé aucune erreur, pourquoi sont-ils vous avez un problème? Si vous savez que quelque chose ne fonctionne pas correctement, vous avez une erreur. – PaulMcKenzie
Les données @Fureeish sont ajoutées uniquement à la fin de la récursion. quand 'data = 8' est inséré, il sera inséré à gauche de la racine mais quand' data = 6' sera inséré, il sera inséré à gauche du noeud 'data = 8'. – ankuselfie