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

C++ में ट्री बनाए बिना समान BST की जांच


हमारे पास BST के तत्वों को दर्शाने के लिए दो सरणियां हैं। यदि हम उस सरणी से तत्वों को बाएं से दाएं लेते हैं, और BST बनाते हैं, तो दोनों सरणियों से लेने पर, हम वही BST बनाएंगे। हमें जांचना है कि दोनों वही बना रहे हैं या नहीं। लेकिन बाधा यह है कि हम BST नहीं बना सकते। मान लीजिए दो सरणियां {2, 4, 1, 3}, और {2, 1, 4, 3} हैं, तो यदि हम देखें, तो ये दोनों क्रम समान BST बना सकते हैं।

C++ में ट्री बनाए बिना समान BST की जांच

दृष्टिकोण सरल है। जैसा कि हम जानते हैं, बाएं सबट्री के तत्व रूट से छोटे होते हैं और दाएं सबट्री के तत्व रूट से बड़े होते हैं। ये दोनों सूचियां समान BST दर्शा सकती हैं यदि प्रत्येक तत्व x के लिए, x के बाएं और दाएं सबट्री के तत्व दोनों सरणियों में उसके बाद प्रकट होते हैं। वही गुण बाएं और दाएं सबट्री के रूट के लिए सत्य है। हम जांचेंगे कि अगले छोटे और बड़े तत्व दोनों सरणियों में समान हैं या नहीं। यही गुण बाएं और दाएं सबट्री के लिए पुनरावर्ती रूप से जांचा जाता है।

उदाहरण

#include <iostream> using namespace std; bool isSameCheckHelper(int tree1[], int tree2[], int n, int i1, int i2, int min, int max) {    int j, k;    for (j = i1; j < n; j++)       if (tree1[j] > min && tree1[j] < max)    break;    for (k = i2; k < n; k++)       if (tree2[k] > min && tree2[k] < max)    break;    if (j==n && k==n) //If the parent element is leaf in both arrays       return true;    if (((j==n)^(k==n)) || tree1[j]!=tree2[k])       return false;    return isSameCheckHelper(tree1, tree2, n, j+1, k+1, tree1[j], max) &&    // for Right Subtree    isSameCheckHelper(tree1, tree2, n, j+1, k+1, min, tree1[j]); // for Left Subtree } bool areBSTSame(int first[], int second[], int n) {    return isSameCheckHelper(first, second, n, 0, 0, INT_MIN, INT_MAX); } int main() {    int first[] = {8, 3, 6, 1, 4, 7, 10, 14, 13};    int second[] = {8, 10, 14, 3, 6, 4, 1, 7, 13};    int n=sizeof(first)/sizeof(first[0]);    if(areBSTSame(first, second, n)) {       cout << "Two BSTs are same";    } else {       cout << "Two BSTs are not same";    } }

आउटपुट

Two BSTs are same

  1. भूलभुलैया III - C++ भूलभुलैया III - C++

    मान लीजिए एक भूलभुलैया है जिसमें खाली स्थान और दीवारें हैं और उस भूलभुलैया में एक गेंद भी है। गेंद ऊपर (u), नीचे (d), बाएं (l) या दाएं (r) दिशाओं में लुढ़ककर खाली स्थानों से गुजर सकती है, लेकिन यह दीवार से टकराने तक लुढ़कती रहती है। जब गेंद रुकती है, तो यह अगली दिशा चुन सकती है। उस भूलभुलैया में एक

  1. C++ में ट्री बनाए बिना समान BST की जांच C++ में ट्री बनाए बिना समान BST की जांच

    हमारे पास BST के तत्वों को दर्शाने के लिए दो सरणियां हैं। यदि हम उस सरणी से तत्वों को बाएं से दाएं लेते हैं, और BST बनाते हैं, तो दोनों सरणियों से लेने पर, हम वही BST बनाएंगे। हमें जांचना है कि दोनों वही बना रहे हैं या नहीं। लेकिन बाधा यह है कि हम BST नहीं बना सकते। मान लीजिए दो सरणियां {2, 4, 1, 3}

  1. - विंडोज पर C++ के लिए शीर्ष IDE

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। यहां विंडोज के लिए सर्वश्रेष्ठ C/C++ IDEs की सूची दी गई है। Visual S