Maison  >  Article  >  développement back-end  >  Écrire un programme de programmation C pour supprimer un arbre

Écrire un programme de programmation C pour supprimer un arbre

WBOY
WBOYavant
2023-08-26 14:45:051041parcourir

Pour supprimer un arbre, nous devons parcourir chaque nœud de l'arbre et les supprimer un par un. De cette façon, nous pouvons supprimer chaque nœud de l’arborescence un par un, le rendant ainsi vide. Pour ce faire, nous devons utiliser une méthode qui parcourt l'arborescence de bas en haut afin de pouvoir supprimer d'abord les nœuds inférieurs, puis leurs parents afin d'éviter une complexité supplémentaire. En fonction de nos besoins, le parcours post-commande est le plus approprié et fonctionne efficacement pour rendre notre programme optimal.

Le parcours post-ordre de l'arbre suivant est -

2-6-4-12-17-15

La technique de parcours cellulaire post-ordre fonctionne comme suit :

Vérifier le nœud enfant gauche → Vérifier le nœud racine → Vérifier le nœud enfant droit

Écrire un programme de programmation C pour supprimer un arbre

Exemple

#include<stdio.h>
#include<stdlib.h>
struct node {
   int data;
   struct node* left;
   struct node* right;
};
struct node* addnode(int data) {
   struct node* node = (struct node*)
      malloc(sizeof(struct node));
   node->data = data;
   node->left = NULL;
   node->right = NULL;
   return(node);
}
void nodedel(struct node* node) {
   if (node == NULL) return;
   nodedel(node->left);
   nodedel(node->right);
   printf("</p><p> Node deleted, value is %d", node->data);
   free(node);
}
int main() {
   struct node *root = addnode(9);
   root->left = addnode(4);
   root->right = addnode(15);
   root->left->left = addnode(2);
   root->left->right = addnode(6);
   root->right->left = addnode(12);
   root->right->right = addnode(17);
   nodedel(root);
   root = NULL;
   printf("</p><p> Tree deleted ");
   return 0;
}

Sortie

Node deleted, value is 4
Node deleted, value is 12
Node deleted, value is 17
Node deleted, value is 15
Node deleted, value is 9
Tree deleted

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer