node ** BST :: searchElement(node **tree, int item)
{
if( ((*tree)->data == item) || ( (*tree) == NULL) )
return tree;
else if( item < (*tree)->data)
return searchElement( &(*tree)->left, item);
else
return searchElement( &(*tree)->right, item);
}
int main(){
BST obj;
int choice;
int height=0,total=0,n,item;
node **tmp;
system(cls);
while(1){
//clrscr();
cout<<*****BINARY SEARCH TREE OPERATIONS*****\n\n;
cout<<1) Create Tree\n;
cout<<2) Traversal\n;
cout<<3) Insert Node\n;
cout<<4) Search Node\n;
cout<<5 Find Smallest Node\n;
cout<<6) Find Largest Node\n;
cout<<7) Exit\n;
cout<<Enter your choice : ;
cin>>choice;
switch(choice){
case 1 : //Create Tree
cout<<\n\n--Creating Tree--;
cout<<\nHow many nodes u want to enter : ;
cin>>n;
for(int i=0;i<n;i++){
cout<<Enter value : ;
cin>>item;
obj.createTree(&obj.tree,item);
}
break;
case 2 : //All Traversals
cout<<\n\nInorder Traversal : ;
obj.inOrder(obj.tree);
cout<<\n\nPre-order Traversal : ;
obj.preOrder(obj.tree);
cout<<\n\nPost-order Traversal : ;
obj.postOrder(obj.tree);
getch();
break;
case 3 : //Inserting a node in a tree
cout<<\n\n--Inserting Node in a tree--\n;
cout<<Enter value : ;
cin>>item;
obj.createTree(&obj.tree,item);
cout<<\nItem is inserted\n;
getch();
break;
case 4 : //Search element
cout<<\n\n--Search Element--\n;
cout<<Enter item to searched : ;
cin>>item;
&(*tmp) = obj.searchElement(&obj.tree,item);
if( (*tmp) == NULL)
cout<<\nSearch Element was not Found;
else
cout<<\nSearch Element was Found;
getch();
break;
case 5 : //Find Smallest Node
cout<<\n\nSmallest Node is : ;
obj.findSmallestNode(obj.tree);
getch();
break;
case 6 : //Find Largest Node
cout<<\n\nLargest Node is : ;
obj.findLargestNode(obj.tree);
getch();
break;
case 7: exit(1);
}//end of switch
}
}
Dans le programme ci-dessus, seul cas 4 ne fonctionne pas correctement lorsque je tente de trouver l'élément particulier dans l'arbre. J'ai inclus la fonction de membre de l'élément de recherche sur le haut du programme principal. Lorsque je programme de mise au point, je recevais une erreur de segmentation en fonction membre d'élément de recherche en particulier si la condition. Je ne sais vraiment pas ce que je dois faire pour sortir de ce problème. Quelqu'un peut-il s'il vous plaît aidez-moi à savoir pourquoi une erreur de segmentation se passe à l'intérieur de l'élément fonction de recherche membre. Laissez-moi savoir si vous avez des questions concernant ce programme.













