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,16 +17,17 @@ node_t *bst_create_node(int val){
}
// détruit l'arbre et vide la mémoire
void bst_destroy(node_t *tree){
if(tree->left==NULL&&tree->right==NULL){
free(tree);
}
else if(tree->left!=NULL){
if(tree==NULL){
return;
}
if(tree->left!=NULL){
bst_destroy(tree->left);
}
else if(tree->right!=NULL){
if(tree->right!=NULL){
bst_destroy(tree->right);
}
}
free(tree);
}
// affiche l'arbre (voir plus bas)
void bst_print(node_t *tree,int prof){
......@@ -45,7 +46,7 @@ void bst_print(node_t *tree,int prof){
// insertion de val dans l'arbre et retourne l'arbre (ou NULL si problème)
node_t *bst_insert(node_t *tree, int val){
if(tree==NULL){
tree=bst_create_node(val);
tree=bst_create_node(val);
}
else if(val>tree->val){
if(tree->right==NULL){
......@@ -63,6 +64,9 @@ node_t *bst_insert(node_t *tree, int val){
bst_insert(tree->left, val);
}
}
else{
return NULL;
}
return 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)
node_t *bst_find_min_node(node_t *tree){
if(tree->left!=NULL){
bst_find_min_node(tree->left);
if(tree==NULL){
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)
......@@ -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)
node_t *bst_find_max_node(node_t *tree){
if(tree->right!=NULL){
bst_find_min_node(tree->right);
node_t* tree_out=tree;
if(tree->right!=NULL){
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)
......
......@@ -15,7 +15,9 @@ int main(){
}
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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment