Bonjour,
J essaye depuis ce matin de creer a partir d une liste chaine un arbre binaire equilibre. J ai reussi a faire quelque fonction dont une qui, en fonction du noeud envoye en parametre place l element voulu a gauche si y a de la place a droite sinon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 t_btree *add_node_in_tree(t_btree *father, char *data) { t_btree *node; node = new_btree_node(data); if (father) if(!(father->left)) { printf("Gauche : %s \n",data); //pour voir ou je cree father->left = node; } else if (!(father->right)) { printf("Droite : %s \n",data); // pour voir ou je cree father->right = node; } else { free(node); } return (node); }
j ai ensuite fait ma fonction sorted_list_to_btree et pour le momen je place au maximun 7 element correctement. Je n arrive pa a voir la recurence qui me permettrai d en ajouter plus
voici ma fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 t_btree *sorted_list_to_btree(t_list *l, int size) { t_btree *tree; t_btree *tmp_tree; t_btree *tmp2_tree; int nbran; int compt; compt = 1; nbran = calcul_nb_brch(size); // pour connaitre le nombre de niveau tree = new_btree_node(l->data); l = l->next; init_tree = tree; while (l) { tmp_tree = tree; while (compt < nbran && l) { printf(" Noeud courant : %s \n", tree->item); // pour connaitre le pere tmp2_tree = tree; tree = add_node_in_tree(tree, l->data); l = l->next; compt ++; } tree = tmp2_tree; compt --; while (compt < nbran && l) { printf(" Noeud courant : %s \n", tmp2_tree->item); tree = add_node_in_tree(tree, l->data); l = l->next; compt ++; } compt = 1; tree = init_tree; } return (tree); }
je m arrache les cheveux aide moi please
Partager