Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में बाइनरी ट्री में नोड का पोस्टऑर्डर सक्सेसर


इस समस्या में, हमें एक बाइनरी ट्री और एक नोड दिया गया है। हमारा कार्य बाइनरी ट्री में उस नोड का पोस्टऑर्डर सक्सेसर प्रिंट करना है।

बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें प्रत्येक नोड में अधिकतम 2 चाइल्ड नोड हो सकते हैं।

C++ में बाइनरी ट्री में नोड का पोस्टऑर्डर सक्सेसर

पोस्टऑर्डर ट्रैवर्सल एक ट्री ट्रैवर्सल तकनीक है, जिसमें पहले बाएं सबट्री को पार किया जाता है, फिर दाएं सबट्री को और अंत में रूट को पार किया जाता है।

उपरोक्त ट्री का पोस्टऑर्डर ट्रैवर्सल: 8 4 2 7 9 6

आइए एक उदाहरण से समझते हैं।

इनपुट - उपरोक्त उदाहरण में बाइनरी ट्री, नोड = 7

आउटपुट - 9

व्याख्या - हम इसे बाइनरी ट्री के पोस्टऑर्डर ट्रैवर्सल में देख सकते हैं।

इस समस्या को हल करने का एक सरल, आसान और नौसिखिया समाधान होगा केवल पोस्टऑर्डर ट्रैवर्सल ढूंढना और फिर ट्रैवर्सल में उसके आगे की संख्या प्रिंट करना।

लेकिन हमें एक अधिक प्रभावी समाधान सीखने की आवश्यकता है,

एक प्रभावी समाधान में पोस्टऑर्डर ट्रैवर्सल पर कुछ सामान्य अवलोकनों का उपयोग शामिल होगा।

  • चूंकि रूट पोस्टऑर्डर ट्रैवर्सल में अंतिम नोड होता है, इसका सक्सेसर NULL होता है।

  • वर्तमान नोड के दाएं चाइल्ड होने की स्थिति में, पैरेंट नोड सक्सेसर होता है।

  • वर्तमान नोड के बाएं चाइल्ड होने की स्थिति में,

    • यदि दायां सिबलिंग अनुपस्थित है, तो सक्सेसर पैरेंट नोड होता है

    • यदि दायां सिबलिंग मौजूद है तो या तो वह नोड या उसका सबसे बायां चाइल्ड सक्सेसर होता है।

यह विधि प्रभावी है, समय जटिलता O(h) है, जहां h ट्री की ऊंचाई है।

उदाहरण

हमारे समाधान के कार्यान्वयन को दर्शाने वाला प्रोग्राम,

#include <iostream> using namespace std; struct Node {    struct Node *left, *right, *parent;    int value; }; struct Node* insertNode(int value) {    Node* temp = new Node;    temp->left = temp->right = temp->parent = NULL;    temp->value = value;    return temp; } Node* findPostorderSuccessor(Node* root, Node* n) {    if (n == root)       return NULL;    Node* parent = n->parent;    if (parent->right == NULL || parent->right == n)       return parent;    Node* curr = parent->right;    while (curr->left != NULL)       curr = curr->left;    return curr; } int main(){    struct Node* root = insertNode(6);    root->parent = NULL;    root->left = insertNode(2);    root->left->parent = root;    root->left->left = insertNode(8);    root->left->left->parent = root->left;    root->left->right = insertNode(4);    root->left->right->parent = root->left;    root->right = insertNode(9);    root->right->parent = root;    root->right->left = insertNode(7);    root->right->left->parent = root->right;    root->left->right->left = insertNode(14);    struct Node* successorNode = findPostorderSuccessor(root, root->left->right);    if (successorNode)       cout<<"पोस्टऑर्डर सक्सेसर ऑफ "<<root->left->right->value<<" is "<<successorNode->value;    else       cout<<"पोस्टऑर्डर सक्सेसर ऑफ "<<root->left->right->value<<" is NULL";    return 0; }

आउटपुट

पोस्टऑर्डर सक्सेसर ऑफ 4 is 2

  1. C++ में बाइनरी ट्री में नोड का प्रीऑर्डर प्रीडिसेसर C++ में बाइनरी ट्री में नोड का प्रीऑर्डर प्रीडिसेसर

    इस समस्या में, हमें एक बाइनरी ट्री और एक नोड मान दिया गया है। हमारा कार्य नोड का प्रीऑर्डर प्रीडिसेसर प्रिंट करना है।बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें प्रत्येक रूट नोड में अधिकतम 2 चाइल्ड नोड्स हो सकते हैं।प्रीऑर्डर ट्रैवर्सल ट्री के नोड्स को पार करने का एक तरीका है। इसमें हम पहले र

  1. C++ में बाइनरी ट्री में नोड का प्रीऑर्डर सक्सेसर C++ में बाइनरी ट्री में नोड का प्रीऑर्डर सक्सेसर

    इस समस्या में, हमें एक बाइनरी ट्री और एक नोड मान दिया गया है। हमारा कार्य नोड का प्रीऑर्डर सक्सेसर प्रिंट करना है।बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें प्रत्येक रूट नोड में अधिकतम 2 चाइल्ड नोड्स हो सकते हैं।प्रीऑर्डर ट्रैवर्सल ट्री के नोड्स को पार करने का एक तरीका है। इसमें हम पहले रूट नोड क

  1. C++ में बाइनरी ट्री में अधिकतम पथ योग C++ में बाइनरी ट्री में अधिकतम पथ योग

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है जिसमें प्रत्येक नोड एक मान रखता है। हमारा कार्य बाइनरी ट्री के दो पत्तों के बीच अधिकतम पथ योग ढूंढने के लिए एक प्रोग्राम बनाना है। यहां, हमें एक पत्ते नोड से दूसरे पत्ते नोड तक का पथ ढूंढना है जो मानों का अधिकतम योग प्रदान करेगा। यह अधिकतम योग पथ रूट न