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

C++ प्रोग्राम: जांचें कि दिया गया बाइनरी ट्री AVL ट्री है या नहीं


AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां बाएं और दाएं सबट्री की ऊंचाई का अंतर सभी नोड्स के लिए एक से अधिक नहीं हो सकता।

यह एक C++ प्रोग्राम है जो जांचता है कि दिया गया बाइनरी ट्री AVL ट्री है या नहीं।

एल्गोरिदम

Begin function AVL() दिए गए ट्री के AVL होने पर सच लौटाता है अन्यथा गलत।    if(root == NULL)       return 1    leftheight = height(root->left)    rightheight = height(root->right)    if(abs(leftheight-rightheight) <= 1 && AVL(root->left) && AVL(root->right))       return 1    return 0 End

उदाहरण

#include <bits/stdc++.h> using namespace std; class nod { //नोड घोषणा    public:    int data;    nod* l;    nod* r; }; nod* newNod(int d) { //नया नोड बनाना    nod* Nod = new nod();    Nod->data = d;    Nod->l = NULL;    Nod->r = NULL;    return(Nod); } int max(int x, int y) { //दो मानों के बीच अधिकतम लौटाएं    return (x >= y)? x: y; } int height(nod* node) { //ऊंचाई प्राप्त करें मतलब रूट नोड से सबसे दूर के लीफ नोड तक सबसे लंबे पाथ पर नोड्स की संख्या।    if(node == NULL)       return 0;    return 1 + max(height(node->l), height(node->r)); } bool AVL(nod *root) {    int lh;    int rh;    if(root == NULL)       return 1;    lh = height(root->l); // बाएं ऊंचाई    rh = height(root->r); // दाएं ऊंचाई    if(abs(lh-rh) <= 1 && AVL(root->l) && AVL(root->r)) return 1;    return 0; } int main() {    //ट्री के नोड्स को इनपुट के रूप में लें    nod *root = newNod(7);    root->l = newNod(6);    root->r = newNod(12);    root->l->l = newNod(4);    root->l->r = newNod(5);    root->r->r = newNod(13);    if(AVL(root))       cout << "The Tree is AVL Tree"<<endl;    else       cout << "The Tree is not AVL Tree "<<endl;    nod *root1 = newNod(7);    root1->l = newNod(6);    root1->r = newNod(12);    root1->l->l = newNod(4);    root1->l->r = newNod(5);    root1->r->r = newNod(13);    root1->r->r->r = newNod(26);    if(AVL(root1))       cout << "The Tree is AVL Tree"<<endl;    else       cout << "The Tree is not AVL Tree "<<endl;    return 0; }

आउटपुट

The Tree is AVL Tree The Tree is not AVL Tree

  1. C++ में जांचें कि दिया गया बाइनरी ट्री सम-ट्री है या नहीं C++ में जांचें कि दिया गया बाइनरी ट्री सम-ट्री है या नहीं

    यहां हम देखेंगे कि बाइनरी ट्री सम-ट्री (SumTree) है या नहीं, इसकी जांच कैसे करें। अब सवाल यह है कि सम-ट्री क्या है। एक सम-ट्री एक बाइनरी ट्री है जहां एक नोड अपने बच्चों के योग का मान रखता है। ट्री का रूट उसके नीचे के सभी तत्वों का पूरा योग रखता है। यह सम-ट्री का एक उदाहरण है -इसे जांचने के लिए, हम ए

  1. C++ में जांचें कि बाइनरी ट्री लेवल-वार सॉर्टेड है या नहीं C++ में जांचें कि बाइनरी ट्री लेवल-वार सॉर्टेड है या नहीं

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

  1. C++ में AVL ट्री को लागू करना C++ में AVL ट्री को लागू करना

    AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां सभी नोड्स के लिए बाएं और दाएं सबट्री की ऊंचाई का अंतर एक से अधिक नहीं हो सकता।ट्री रोटेशन एक ऑपरेशन है जो AVL ट्री पर एलिमेंट्स के क्रम में हस्तक्षेप किए बिना स्ट्रक्चर को बदलता है। यह ट्री में एक नोड को ऊपर ले जाता है और एक नोड को नीचे। इसका उपयो