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
#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; }
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!