Skip to content
Snippets Groups Projects
Commit 008cbd88 authored by florent.didion's avatar florent.didion
Browse files

bye black magic

parent 0fecde1b
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -17,15 +17,16 @@ node_t *bst_create_node(int val){ ...@@ -17,15 +17,16 @@ node_t *bst_create_node(int val){
} }
// détruit l'arbre et vide la mémoire // détruit l'arbre et vide la mémoire
void bst_destroy(node_t *tree){ void bst_destroy(node_t *tree){
if(tree->left==NULL&&tree->right==NULL){ if(tree==NULL){
free(tree); return;
} }
else if(tree->left!=NULL){ if(tree->left!=NULL){
bst_destroy(tree->left); bst_destroy(tree->left);
} }
else if(tree->right!=NULL){ if(tree->right!=NULL){
bst_destroy(tree->right); bst_destroy(tree->right);
} }
free(tree);
} }
// affiche l'arbre (voir plus bas) // affiche l'arbre (voir plus bas)
...@@ -63,6 +64,9 @@ node_t *bst_insert(node_t *tree, int val){ ...@@ -63,6 +64,9 @@ node_t *bst_insert(node_t *tree, int val){
bst_insert(tree->left, val); bst_insert(tree->left, val);
} }
} }
else{
return NULL;
}
return tree; return tree;
...@@ -131,11 +135,15 @@ bool bst_is_bst(node_t *tree){ ...@@ -131,11 +135,15 @@ bool bst_is_bst(node_t *tree){
// retourne le noeud avec la valeur minimale de l'arbre (NULL s'il y a pas) // retourne le noeud avec la valeur minimale de l'arbre (NULL s'il y a pas)
node_t *bst_find_min_node(node_t *tree){ node_t *bst_find_min_node(node_t *tree){
if(tree->left!=NULL){ if(tree==NULL){
bst_find_min_node(tree->left); return NULL;
}
else if(tree->left!=NULL){
return bst_find_min_node(tree->left);
} }
else{
return tree; return tree;
}
} }
// retourne la valeur la plus petite stockée dans l'arbre (ou MIN_INT) // retourne la valeur la plus petite stockée dans l'arbre (ou MIN_INT)
...@@ -145,10 +153,12 @@ int bst_find_min(node_t *tree){ ...@@ -145,10 +153,12 @@ int bst_find_min(node_t *tree){
// retourne le noeud avec la valeur maximale de l'arbre (NULL s'il y a pas) // retourne le noeud avec la valeur maximale de l'arbre (NULL s'il y a pas)
node_t *bst_find_max_node(node_t *tree){ node_t *bst_find_max_node(node_t *tree){
node_t* tree_out=tree;
if(tree->right!=NULL){ if(tree->right!=NULL){
bst_find_min_node(tree->right); tree_out=bst_find_max_node(tree->right);
} }
return tree; return tree_out;
} }
// retourne la valeur la plus grande stockée dans l'arbre (ou MAX_INT) // retourne la valeur la plus grande stockée dans l'arbre (ou MAX_INT)
......
...@@ -15,7 +15,9 @@ int main(){ ...@@ -15,7 +15,9 @@ int main(){
} }
bst_print(tree, 0); bst_print(tree, 0);
printf("printed \n\n"); printf("min value is :%d\n\n",(bst_find_min_node(tree))->val);
printf("max value is :%d\n\n",(bst_find_max_node(tree))->val);
//bst_print(tree, 0);
bst_destroy(tree); bst_destroy(tree);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment