एक ट्री को डिलीट करने के लिए हमें ट्री के प्रत्येक नोड को पार करना होगा और फिर उनमें से प्रत्येक को डिलीट करना होगा। यह एक-एक करके ट्री के हर नोड को डिलीट करता है और इसे खाली बना देता है। इसके लिए, हमें एक ऐसी विधि का उपयोग करने की आवश्यकता है जो ट्री को नीचे से ऊपर की ओर पार करे ताकि हम पहले निचले नोड्स को डिलीट कर सकें और फिर उनके पैरेंट को ताकि कोई अतिरिक्त जटिलता न उत्पन्न हो। जिस शर्त की हमें आवश्यकता है, उसके आधार पर, पोस्टऑर्डर ट्रैवर्सल (postorder traversal) सबसे उपयुक्त होगा और कुशलतापूर्वक काम करेगा ताकि हमारा प्रोग्राम इष्टतम हो।
निम्न ट्री के लिए पोस्ट-ऑर्डर है -
2-6-4-12-17-15
पोस्टऑर्डर ट्रैवर्सल तकनीक निम्न तरीके से काम करती है -
बाएं चाइल्ड नोड की जांच करें → रूट नोड की जांच करें → दाएं चाइल्ड नोड की जांच करें

उदाहरण
#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("\n नोड डिलीट किया गया, मान है %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("\n ट्री डिलीट हो गया ");
return 0;
}
आउटपुट
नोड डिलीट किया गया, मान है 4 नोड डिलीट किया गया, मान है 12 नोड डिलीट किया गया, मान है 17 नोड डिलीट किया गया, मान है 15 नोड डिलीट किया गया, मान है 9 ट्री डिलीट हो गया