Hey quelqu'un peut-il expliquer comment trier un arbre binaire en utilisant le tri d'insertion en langage C où la complexité en temps est un problème. J'apprends juste à coder. Merci les gars!Tri par insertion d'arbre binaire dans C
Répondre
Si vous avez codé l'arbre binaire au sens traditionnel, lorsque vous ajoutez des éléments à l'arborescence, il conserve l'ordre trié. Vous pouvez obtenir la liste complète des éléments dans l'ordre en traversant l'arbre. Je vous recommande de lire:
Jetez aussi un oeil à: http://nova.umuc.edu/~jarc/idsv/lesson1.html
Merci pour l'info. – SaM
@SaM, pas de problème. Heureux de vous pointer dans la bonne direction. –
Il convient de noter qu'il ya une certaine terminologie à utiliser ici. Un arbre binaire est une structure de données dans laquelle chaque nœud a au plus deux enfants. Il n'y a pas de conventions pour la commande de nœuds dans un arbre binaire.
Un arbre de recherche binaire est un arbre binaire tel que pour donné un noeud N tous les nœuds du sous-arbre gauche de N sont considérés comme « moins de » N et tous les nœuds du sous-arbre droit de N sont considérés comme « supérieure "N. Vous pouvez également laisser des nœuds considérés comme" égaux à "N dans l'arbre, à condition que vous les définissiez de façon cohérente pour être placés dans le sous-arbre gauche ou le sous-arbre droit. Comme d'autres l'ont suggéré, le mieux est de modifier le code pour construire un arbre de recherche binaire au lieu d'un arbre binaire normal, ou convertir l'arbre binaire en une structure de données linéaire et le trier.
#include <stdio.h>
#include <malloc.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
struct Node {
int val;
struct Node *left;
struct Node *right;
};
typedef struct Node node;
void insert(node **bt, node *Node) {
if(!(*bt)) {
*bt = Node;
} else {
if(Node->val < (*bt)->val)
insert(&((*bt)->left), Node);
else
insert(&((*bt)->right), Node);
}
}
void printout(struct Node *node) {
if(node->left) printout(node->left);
printf("%d ", node->val);
if(node->right) printout(node->right);
}
void postorder(struct Node *node) {
if(node->left) printout(node->left);
if(node->right) printout(node->right);
printf("%d ", node->val);
}
int main() {
int i, n, elem;
node *curr;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
node *bt = NULL;
scanf("%d", &n);
for(i = 0; i < n; ++i) {
scanf("%d", &elem);
curr = malloc(sizeof(struct Node));
curr->val = elem;
curr->left = NULL;
curr->right = NULL;
insert(&bt, curr);
}
printout(bt);
return(0);
}
Disons que algsort.in contient le tableau suivant des entiers:
algsort.int -> 9,8,7,6,5,4,3,2,0,1, - 1;
algsort.out -> -1,0,1,2,3,4,5,6,7,8,9
- 1. C- Tri par insertion
- 2. Tri par insertion droite et binaire
- 3. Tri du tableau par tri par insertion
- 4. C++ Alphabétique Insertion Tri
- 5. Tri de tri par opposition à tri par insertion
- 6. Tri personnalisé avec tri par insertion
- 7. Tri de l'enveloppe et tri par insertion
- 8. Tri par insertion dans l'ordre décroissant en C++
- 9. Tâche de tri par insertion
- 10. tri par insertion - question pseudocode
- 11. Tri par insertion dans un système distribué
- 12. Tri par insertion d'éléments dans le tableau
- 13. Combinaison du tri par fusion avec le tri par insertion
- 14. C++: blocage d'un programme à l'aide du tri par insertion
- 15. Erreur de calcul médian du tri par insertion C++
- 16. Programmation C: comment implémenter un tri par insertion?
- 17. Inversion pour le tri par insertion!
- 18. pseudo-algorithme d'algorithme de tri par insertion
- 19. Java: échange d'algorithmes de tri par insertion
- 20. mise en œuvre de tri par insertion
- 21. tri par insertion et tableaux 2d
- 22. tri d'un tableau partiellement trié avec tri par insertion
- 23. Le tri par insertion Python avec recherche binaire ne fonctionne pas (mais presque)
- 24. Insertion dans un arbre binaire qui utilise void * en C
- 25. insertion d'un arbre binaire
- 26. Comment faites-vous un tri par insertion dans l'assemblage?
- 27. trouver grand-o temps complexité de tri par insertion
- 28. Tri par sélection et tri par insertion. Énorme différence de vitesse
- 29. Tri binaire, mpi4py
- 30. Insertion d'un arbre binaire récursif
Comment un arbre binaire peut être hors d'usage !? – StoryTeller
Si vous venez de commencer à apprendre à coder, essayez d'abord d'autres structures de données, avant les arbres binaires! – Paschalis
@StoryTeller, vous a donné un vote up. Comme il l'a déclaré, il apprend juste pour ne pas être familier avec la traversée des arbres. –