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

C++ में इनऑर्डर ट्रैवर्सल में n-वां नोड ढूंढना


इस समस्या में, हमें एक बाइनरी ट्री और एक पूर्णांक N दिया जाता है। कार्य बाइनरी ट्री के इनऑर्डर ट्रैवर्सल में n-वां नोड ढूंढना है।

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

ट्रैवर्सल एक प्रक्रिया है जो ट्री के सभी नोड्स को विजिट करती है और उनके मान भी प्रिंट कर सकती है।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

N = 6

C++ में इनऑर्डर ट्रैवर्सल में n-वां नोड ढूंढना

आउटपुट

3

व्याख्या

ट्री का इनऑर्डर ट्रैवर्सल : 4, 2, 5, 1, 6, 3, 7

समाधान दृष्टिकोण

विचार बाइनरी ट्री के इन-ऑर्डर ट्रैवर्सल का उपयोग करना है जो पुनरावर्ती कॉल का उपयोग करके किया जाता है। प्रत्येक कॉल में हम पहले बाएं सबट्री के लिए preOrder() कॉल करेंगे और रूट नोड को पार करेंगे फिर preOrder() कॉल करेंगे। इस ट्रैवर्सल के दौरान, हम नोड्स की संख्या गिनेंगे और उस नोड को प्रिंट करेंगे जिसके लिए गिनती N है।

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

उदाहरण

#include <iostream> using namespace std; struct Node {    int data;    Node *left, *right; }; struct Node* createNode(int item){    Node* temp = new Node;    temp->data = item;    temp->left = NULL;    temp->right = NULL;    return temp; } void findInOrderTraversalRec(struct Node* node, int N){    static int count = 0;    if (node == NULL)       return;    if (count <= N) {       findInOrderTraversalRec(node->left, N);       count++;       if (count == N)          cout<<node->data;       findInOrderTraversalRec(node->right, N);    } } int main() {    struct Node* root = createNode(1);    root->left = createNode(2);    root->right = createNode(3);    root->left->left = createNode(4);    root->left->right = createNode(5);    root->right->left = createNode(6);    root->right->right = createNode(7);    int N = 6;    cout<<N<<"th node in inorder traversal is ";    findInOrderTraversalRec(root, N);    return 0; }

आउटपुट

6th node in inorder traversal is 3

  1. C++ में BST में Inorder Successor (द्वितीय संस्करण) C++ में BST में Inorder Successor (द्वितीय संस्करण)

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री में एक नोड है, हमें उस नोड का इन-ऑर्डर सक्सेसर BST में ढूंढना है। यदि कोई इन-ऑर्डर सक्सेसर नहीं है, तो null लौटाएँ। जैसा कि हम जानते हैं कि एक नोड का सक्सेसर वह नोड है जिसका कुंजी मान नोड के मान से सबसे छोटा बड़ा होता है। हमें नोड तक सीधी पहुंच होगी लेकिन ट्र

  1. C++ में N-ary ट्री प्रीऑर्डर ट्रैवर्सल C++ में N-ary ट्री प्रीऑर्डर ट्रैवर्सल

    समस्या विवरण मान लीजिए हमारे पास एक N-ary ट्री है, हमें इसके नोड्स का प्रीऑर्डर ट्रैवर्सल ज्ञात करना है। उदाहरण यदि इनपुट ट्री है: तो आउटपुट होगा: [1,3,5,6,2,4] हल करने का दृष्टिकोण इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें: एक सरणी ans परिभाषित करें preorder() नामक एक विधि परिभ

  1. बाइनरी ट्री के वर्टिकल ऑर्डर ट्रैवर्सल में kवां नोड खोजें C++ में बाइनरी ट्री के वर्टिकल ऑर्डर ट्रैवर्सल में kवां नोड खोजें C++ में

    मान लीजिए हमारे पास एक बाइनरी ट्री और एक मान K है। कार्य वर्टिकल ऑर्डर ट्रैवर्सल में Kवें नोड को प्रिंट करना है। यदि ऐसा कोई नोड मौजूद नहीं है, तो -1 वापस करें। तो यदि ट्री नीचे जैसा है - वर्टिकल ऑर्डर ट्रैवर्सल इस तरह है - 4 2 1 5 6 3 8 7 9 तो यदि K = 3, तो परिणाम 1 होगा। दृष्टिकोण सरल है। हम वर्ट