Um einen Baum zu löschen, müssen wir jeden Knoten des Baums durchlaufen und ihn einzeln löschen. Auf diese Weise können wir jeden Knoten des Baums einzeln löschen und ihn leer machen. Dazu müssen wir eine Methode verwenden, die den Baum von unten nach oben durchläuft, sodass wir zuerst die unteren Knoten und dann ihre übergeordneten Knoten entfernen können, um zusätzliche Komplexität zu vermeiden. Basierend auf unseren Anforderungen ist Postorder-Traversal am besten geeignet und funktioniert effizient, um unser Programm optimal zu machen.
Die Post-Order-Traversierung des folgenden Baums ist -
2-6-4-12-17-15
Die Post-Order-Traversal-Zellentechnik funktioniert wie folgt:
Überprüfen Sie den linken untergeordneten Knoten → Überprüfen Sie den Wurzelknoten → Überprüfen Sie den rechten untergeordneten Knoten
#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
Das obige ist der detaillierte Inhalt vonSchreiben Sie ein C-Programmierprogramm, um einen Baum zu löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!