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

बाइनरी ट्री में रूट से दिए गए नोड तक की दूरी खोजें C++ में

मान लीजिए हमारे पास कुछ नोड्स के साथ एक बाइनरी ट्री है। हमें रूट और दूसरे नोड u के बीच की दूरी खोजनी है। मान लीजिए ट्री नीचे जैसा है:

बाइनरी ट्री में रूट से दिए गए नोड तक की दूरी खोजें C++ में

अब (रूट, 6) के बीच की दूरी = 2, पथ की लंबाई 2 है, (रूट, 8) के बीच की दूरी = 3 आदि।

इस समस्या को हल करने के लिए, हम नोड को बाएं और दाएं सबट्री में खोजने के लिए एक पुनरावर्ती दृष्टिकोण का उपयोग करेंगे, और प्रत्येक स्तर के लिए लंबाई को भी अपडेट करेंगे।

उदाहरण

#include <iostream>
using namespace std;

class Node {
public:
    int data;
    Node *left, *right;
};

Node* getNode(int data) {
    Node* node = new Node;
    node->data = data;
    node->left = node->right = NULL;
    return node;
}

int getDistance(Node *root, int x) {
    if (root == NULL)
        return -1;
    int dist = -1;
    if ((root->data == x) || (dist = getDistance(root->left, x)) >= 0 || (dist = getDistance(root->right, x)) >= 0)
        return dist + 1;
    return dist;
}

int main() {
    Node* root = getNode(1);
    root->left = getNode(2);
    root->right = getNode(3);
    root->left->left = getNode(4);
    root->left->right = getNode(5);
    root->right->left = getNode(6);
    root->right->right = getNode(7);
    root->right->left->right = getNode(8);
    cout << "Distance from root to node 6 is: " << getDistance(root, 6);
    cout << "\nDistance from root to node 8 is: " << getDistance(root, 8);
}

आउटपुट

Distance from root to node 6 is: 2 Distance from root to node 8 is: 3

  1. C++ में दूषित बाइनरी ट्री में तत्व खोजें C++ में दूषित बाइनरी ट्री में तत्व खोजें

    मान लीजिए हमारे पास एक बाइनरी ट्री है। उस ट्री के नियम इस प्रकार हैं: root.val == 0 यदि treeNode.val x है और treeNode.left null नहीं है, तो treeNode.left.val = 2 * x + 1 यदि treeNode.val x है और treeNode.right null नहीं है, तो treeNode.right.val = 2 * x + 2 अब चूंकि बाइनरी ट्री दूषित है। यह इंगि

  1. C++ में दिए गए नोड से दूरी K पर सभी नोड्स प्रिंट करना C++ में दिए गए नोड से दूरी K पर सभी नोड्स प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री, एक टारगेट नोड और एक पूर्णांक K दिया गया है। हमें ट्री के उन सभी नोड्स को प्रिंट करना है जो टारगेट नोड से दूरी K पर हैं। बाइनरी ट्री बाइनरी ट्री एक विशेष ट्री है जिसके प्रत्येक नोड में अधिकतम दो नोड्स होते हैं (एक/दो/कोई नहीं)। उदाहरण K = 2 टारगेट नोड: 9 आउटपुट

  1. C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें अलग-अलग लेवल पर लीफ नोड्स हैं। एक और पॉइंटर दिया गया है, जो एक नोड को इंगित कर रहा है। हमें इंगित नोड से निकटतम लीफ नोड की दूरी ढूंढनी है। ट्री को नीचे जैसा मानें - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 पर इंगित कर रहा है, तो -5 से निकटतम नोड