इस ट्यूटोरियल में, हम सीखेंगे कि दिए गए मान वाले पेड़ से लीफ नोड्स को कैसे हटाया जाए।
आइए समस्या को हल करने के लिए चरणों को देखें।
-
बाइनरी ट्री के लिए एक स्ट्रक्चर नोड लिखें।
-
पेड़ के माध्यम से ट्रैवर्स (इनऑर्डर, प्रीऑर्डर, पोस्टऑर्डर) के लिए एक फ़ंक्शन लिखें और सभी डेटा प्रिंट करें।
-
स्ट्रक्चर के साथ नोड बनाकर ट्री को इनिशियलाइज़ करें।
-
x मान प्रारंभ करें।
-
दिए गए मान के साथ लीफ नोड्स को हटाने के लिए एक फ़ंक्शन लिखें। यह दो तर्क रूट नोड और k मान को स्वीकार करता है।
-
यदि रूट एक शून्य वापसी है।
-
हटाने के बाद रूट के बाएं नोड को एक नए रूट से बदलें।
-
रूट के दाहिने नोड के साथ भी।
-
यदि वर्तमान रूट नोड डेटा k के बराबर है और यह एक लीफ नोड है, तो एक नल पॉइंटर लौटाएं।
-
रूट नोड लौटाएं
-
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node *left, *right; }; struct Node* newNode(int data) { struct Node* newNode = new Node; newNode->data = data; newNode->left = newNode->right = NULL; return newNode; } Node* deleteLeafNodes(Node* root, int k) { if (root == NULL) { return nullptr; } root->left = deleteLeafNodes(root->left, k); root->right = deleteLeafNodes(root->right, k); // checking the current node data with k if (root->data == k && root->left == NULL && root->right == NULL) { // deleting the node return nullptr; } return root; } void inorder(Node* root) { if (root == NULL) { return; } inorder(root->left); cout << root->data << " "; inorder(root->right); } int main(void) { struct Node* root = newNode(1); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(3); root->left->right = newNode(4); root->right->right = newNode(5); root->right->left = newNode(4); root->right->right->left = newNode(4); root->right->right->right = newNode(4); deleteLeafNodes(root, 4); cout << "Tree: "; inorder(root); cout << endl; return 0; }
आउटपुट
यदि आप उपरोक्त कोड को निष्पादित करते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
Tree: 3 2 1 3 5
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।