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

सी++ में इनऑर्डर ट्रैवर्सल का एन-वें नोड खोजें

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

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

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

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

इनपुट

N = 6

सी++ में इनऑर्डर ट्रैवर्सल का एन-वें नोड खोजें

आउटपुट

3

स्पष्टीकरण

inorder traversal of tree : 4, 2, 5, 1, 6, 3, 7

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

विचार बाइनरी ट्री के इन-ऑर्डर ट्रैवर्सल का उपयोग करना है जो रिकर्सिव कॉल का उपयोग करके किया जाता है। प्रत्येक कॉल में हम पहले बाएं सबट्री के लिए प्रीऑर्डर() को कॉल करेंगे और रूट नोड को पार करेंगे और फिर प्रीऑर्डर() को कॉल करेंगे। इस ट्रैवर्सल के दौरान, हम नोड्स की संख्या गिनेंगे और उस नोड को प्रिंट करेंगे जिसके लिए गिनती 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. सी ++ में बीएसटी II में उत्तराधिकारी उत्तराधिकारी

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

  1. सी++ में एन-आरी ट्री प्रीऑर्डर ट्रैवर्सल

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

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

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