इस ट्यूटोरियल में, हम बाइनरी ट्री में रूट से दिए गए नोड तक का पथ प्रिंट करने के प्रोग्राम पर चर्चा करेंगे।
एक दिए गए बाइनरी ट्री जिसमें विशिष्ट नोड्स हैं, हमें रूट नोड से बाइनरी ट्री के विशेष रूप से दिए गए नोड तक पहुंचने का पूरा पथ प्रिंट करना होगा।
इस समस्या को हल करने के लिए, हम पुनरावृत्ति का उपयोग करेंगे। बाइनरी ट्री को पार करते समय, हम विशेष रूप से खोजे जाने वाले तत्व के लिए पुनरावर्ती रूप से खोज करेंगे। साथ ही हम खोजे जाने वाले तत्व तक पहुंचने के पथ को स्टोर करेंगे।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node *left, *right;
};
struct Node* create_node(int data) {
struct Node *new_node = new Node;
new_node->data = data;
new_node->left = new_node->right = NULL;
return new_node;
}
// जांचें कि रूट नोड से तत्व तक पथ मौजूद है या नहीं
bool is_path(Node *root, vector& arr, int x) {
if (!root)
return false;
arr.push_back(root->data);
if (root->data == x)
return true;
if (is_path(root->left, arr, x) || is_path(root->right, arr, x))
return true;
arr.pop_back();
return false;
}
// रूट नोड से तत्व तक का पथ प्रिंट करना
void print_path(Node *root, int x) {
vector arr;
if (is_path(root, arr, x)) {
for (int i = 0; i < arr.size() - 1; i++)
cout << arr[i] << " -> ";
cout << arr[arr.size() - 1];
} else
cout << "Path doesn't exist" << endl;
}
int main() {
struct Node *root = create_node(13);
root->left = create_node(21);
root->right = create_node(43);
root->left->left = create_node(34);
root->left->right = create_node(55);
root->right->left = create_node(68);
root->right->right = create_node(79);
int x = 68;
print_path(root, x);
return 0;
}
आउटपुट
13 -> 43 -> 68