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

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


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

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

प्रीऑर्डर ट्रैवर्सल ट्री के नोड्स को पार करने का एक तरीका है। इसमें हम पहले रूट नोड को पार करते हैं फिर लेफ्ट चाइल्ड और फिर राइट चाइल्ड।

प्रीऑर्डर प्रीडिसेसर नोड वह नोड है जो प्रीऑर्डर ट्रैवर्सल में नोड से पहले आता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं

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

Input: 1 Output: 9

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

एक अधिक प्रभावी समाधान में दिए गए नंबर की स्थिति की जांच करना और फिर स्थितियों के आधार पर उसके प्रीडिसेसर को खोजना शामिल होगा। यदि नोड रूट नोड है, तो NULL लौटाएं, कोई प्रीडिसेसर नहीं। यदि नोड राइट चाइल्ड है, तो लेफ्ट चाइल्ड प्रीडिसेसर होगा।

समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम

उदाहरण

#include <iostream> using namespace std; struct Node {    struct Node *left, *right, *parent;    int key; }; struct Node* insertNode(int key){    Node* temp = new Node;    temp->left = temp->right = temp->parent = NULL;    temp->key = key;    return temp; } Node* preOrderPredecessorNode(Node* root, Node* n){    if (n == root)       return NULL;    Node* parent = n->parent;    if (parent->left == NULL || parent->left == n)       return parent;    Node* curr = parent->left;    while (curr->right != NULL)       curr = curr->right;    return curr; } int main() {    Node* root = insertNode(99);    root->parent = NULL;    root->left = insertNode(4);    root->left->parent = root;    root->left->left = insertNode(18);    root->left->left->parent = root->left;    root->left->right = insertNode(50);    root->left->right->parent = root->left;    root->right = insertNode(26);    root->right->parent = root;    root->right->left = insertNode(5);    root->right->left->parent = root->right;    root->right->right = insertNode(10);    root->right->right->parent = root->right;    Node* preOrderPredecessor = preOrderPredecessorNode(root, root->left->right);    if (preOrderPredecessor)       cout<<"Preorder Predecessor of "<<root->left->right->key<<" is "<<preOrderPredecessor->key;    else       cout<<"Preorder Predecessor of "<<root->left->right->key<<" is NULL";    return 0; }

आउटपुट

Preorder Predecessor of 50 is 18

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

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

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

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

  1. पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal) पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal)

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें उस ट्री का प्रीऑर्डर ट्रैवर्सल लौटाना है। यदि ट्री इस तरह है: तो प्रीऑर्डर ट्रैवर्सल होगा: [3,9,20,15,7] इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे: res और st नामक दो खाली सूचियाँ बनाएं। node := root जब तक node या st खाली नहीं है: जब