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

C++ प्रोग्राम: लिंक्ड लिस्ट का उपयोग करके बाइनरी सर्च ट्री कार्यान्वित करें

एल्गोरिदम

ट्री के नोड्स को इनपुट के रूप में लें। डेटा d, बाएं पॉइंटर l और दाएं पॉइंटर r के साथ nod संरचना बनाएं। create() फ़ंक्शन बनाएं: नोड्स की संख्या c = 0 प्रारंभ करें। जब तक c < 6 तब तक लूप चलाएं: रूट दर्ज करें, नोड का मान दर्ज करें, यदि यह रूट से बड़ा है तो दाएं डालें अन्यथा बाएं। inorder(), preorder(), postorder() फ़ंक्शन बनाएं क्रमशः लेफ्ट-रूट-राइट, रूट-लेफ्ट-राइट, लेफ्ट-राइट-रूट ट्रैवर्सल के लिए। main() से फ़ंक्शन कॉल करें और परिणाम प्रिंट करें।

उदाहरण कोड

#include <iostream>
using namespace std;

struct nod {
    nod *l, *r;
    int d;
} *r = NULL, *p = NULL, *np = NULL, *q;

void create() {
    int v, c = 0;
    while (c < 6) {
        if (r == NULL) {
            r = new nod;
            cout << "रूट नोड का मान दर्ज करें\n";
            cin >> r->d;
            r->r = NULL;
            r->l = NULL;
        } else {
            p = r;
            cout << "नोड का मान दर्ज करें\n";
            cin >> v;
            while (true) {
                if (v < p->d) {
                    if (p->l == NULL) {
                        p->l = new nod;
                        p = p->l;
                        p->d = v;
                        p->l = NULL;
                        p->r = NULL;
                        cout << "बाएं में मान डाला गया\n";
                        break;
                    } else if (p->l != NULL) {
                        p = p->l;
                    }
                } else if (v > p->d) {
                    if (p->r == NULL) {
                        p->r = new nod;
                        p = p->r;
                        p->d = v;
                        p->l = NULL;
                        p->r = NULL;
                        cout << "दाएं में मान डाला गया\n";
                        break;
                    } else if (p->r != NULL) {
                        p = p->r;
                    }
                }
            }
        }
        c++;
    }
}

void inorder(nod *p) {
    if (p != NULL) {
        inorder(p->l);
        cout << p->d << endl;
        inorder(p->r);
    }
}

void preorder(nod *p) {
    if (p != NULL) {
        cout << p->d << endl;
        preorder(p->l);
        preorder(p->r);
    }
}

void postorder(nod *p) {
    if (p != NULL) {
        postorder(p->l);
        postorder(p->r);
        cout << p->d << endl;
    }
}

int main() {
    create();
    cout << "इनऑर्डर में ट्रैवर्सल\n";
    inorder(r);
    cout << "प्रीऑर्डर में ट्रैवर्सल\n";
    preorder(r);
    cout << "पोस्टऑर्डर में ट्रैवर्सल\n";
    postorder(r);
    return 0;
}

आउटपुट

रूट नोड का मान दर्ज करें
7
नोड का मान दर्ज करें
6
बाएं में मान डाला गया
नोड का मान दर्ज करें
4
बाएं में मान डाला गया
नोड का मान दर्ज करें
3
बाएं में मान डाला गया
नोड का मान दर्ज करें
2
बाएं में मान डाला गया
नोड का मान दर्ज करें
1
बाएं में मान डाला गया
इनऑर्डर में ट्रैवर्सल
1
2
3
4
6
7
प्रीऑर्डर में ट्रैवर्सल
7
6
4
3
2
1
पोस्टऑर्डर में ट्रैवर्सल
1
2
3
4
6
7
  1. C++ में बाइनरी सर्च ट्री को पुनर्प्राप्त करना C++ में बाइनरी सर्च ट्री को पुनर्प्राप्त करना

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री (BST) है, अब इस BST के दो तत्वों को आपस में बदल दिया गया है, इसलिए हमें इस बाइनरी सर्च ट्री को पुनर्प्राप्त करना होगा। यदि दिया गया ट्री पहले जैसा है, तो पुनर्प्राप्त ट्री दूसरे जैसा होगा। हल करने का दृष्टिकोण इस समस्या को हल करने के लिए हम निम्नलिखित चरणों क

  1. C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें ट्री का प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के नाम से जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का ट्री है जो निम्नलिखित नियमों का पालन करता है - बाएं चाइ

  1. C++ में बाइनरी खोज प्रोग्राम C++ में बाइनरी खोज प्रोग्राम

    बाइनरी खोज क्या है? बाइनरी खोज (आधा-अंतराल खोज) एक खोज एल्गोरिदम है जो क्रमबद्ध सरणी में लक्ष्य मान की स्थिति ढूंढता है। यह लक्ष्य मान की तुलना मध्य तत्व से करता है और खोज स्थान को आधा कर देता है। मुख्य बिंदु केवल क्रमबद्ध सरणी पर काम करता है समय जटिलता: O(log n) दुनिया के सभी नाम क्रमबद्ध हों तो