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

C++ में दो ट्री समान हैं या नहीं जांचने का कोड


इस समस्या में, हमें दो ट्री दिए गए हैं। हमारा कार्य यह जांचने के लिए एक कोड लिखना है कि क्या दो ट्री समान हैं या नहीं।

दो ट्री को समान कहा जाता है यदि सरणी के तत्वों का समान मान और अभिविन्यास हो।

उदाहरण

C++ में दो ट्री समान हैं या नहीं जांचने का कोड
C++ में दो ट्री समान हैं या नहीं जांचने का कोड


चूंकि दोनों ट्री में तत्वों के समान मान और स्थिति हैं, इसलिए दोनों ट्री समान हैं।

यह जांचने के लिए कि क्या दो ट्री समान हैं, हम नोड दर नोड प्रत्येक नोड पर जाएंगे और चरण दर चरण उनकी समानता की जांच करेंगे और यदि किसी बिंदु पर दो नोड्स समान नहीं हैं तो -1 लौटाएं, जो दर्शाता है कि ट्री समान नहीं हैं और यदि पूरा ट्री पार हो जाता है या दोनों ट्री खाली हैं तो 1 लौटाएं, जो दर्शाता है कि ट्री समान हैं।

उपरोक्त समाधान के कार्य को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream>
using namespace std;

class node {
public:
    int data;
    node* left;
    node* right;
};

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

int isIdentricalTrees(node* tree1, node* tree2) {
    if (tree1 == NULL && tree2 == NULL)
        return 1;
    if (tree1 != NULL && tree2 != NULL) {
        return(tree1->data == tree2->data && isIdentricalTrees(tree1->left, tree2->left) && isIdentricalTrees(tree1->right, tree2->right));
    }
    return 0;
}

int main() {
    node *root1 = insertNode(4);
    node *root2 = insertNode(4);
    root1->left = insertNode(5);
    root1->right = insertNode(0);
    root1->left->left = insertNode(1);
    root1->left->right = insertNode(9);
    root1->right->left = insertNode(7);
    root2->left = insertNode(5);
    root2->right = insertNode(0);
    root2->left->left = insertNode(1);
    root2->left->right = insertNode(9);
    root2->right->left = insertNode(7);
    cout << "Both the given trees are ";
    if (isIdentricalTrees(root1, root2))
        cout << "identical";
    else
        cout << "not identical";
    return 0;
}

आउटपुट

Both the given trees are identical
  1. C++ में दो बाइनरी ट्री को मर्ज करने का प्रोग्राम C++ में दो बाइनरी ट्री को मर्ज करने का प्रोग्राम

    मान लीजिए हमारे पास दो बाइनरी ट्री हैं और जब हम उनमें से एक को दूसरे पर रखते हैं, तो कुछ नोड्स ओवरलैप होते हैं जबकि अन्य नहीं। हमें उन्हें एक नए बाइनरी ट्री में मर्ज करना है। मर्ज नियम यह है कि यदि दो नोड्स ओवरलैप करते हैं, तो उनके मानों को जोड़कर मर्ज किए गए नोड का नया मान बनाया जाता है। अन्यथा, ग

  1. C++ में दो बाइनरी सर्च ट्रीज़ के सभी एलिमेंट्स C++ में दो बाइनरी सर्च ट्रीज़ के सभी एलिमेंट्स

    मान लीजिए हमारे पास दो बाइनरी सर्च ट्रीज़ हैं, हमें मानों की एक सूची लौटानी है, जिसमें इन ट्रीज़ में मौजूद सभी एलिमेंट्स हों, और सूची के एलिमेंट्स आरोही क्रम में हों। यदि ट्रीज़ इस प्रकार हैं -तो आउटपुट [0,1,1,2,3,4] होगा।इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे -ans नामक एक ऐरे परिभाष

  1. C++ में दो बाइनरी ट्री को मर्ज करना C++ में दो बाइनरी ट्री को मर्ज करना

    मान लीजिए हमारे पास दो बाइनरी ट्री हैं और जब हम एक को दूसरे पर ओवरलैप करते हैं, तो कुछ नोड्स ओवरलैप होते हैं जबकि अन्य नहीं। हमें इन्हें एक नए बाइनरी ट्री में मर्ज करना है। मर्ज का नियम यह है कि यदि दो नोड्स ओवरलैप होते हैं, तो उनके मानों को जोड़कर मर्ज किए गए नोड का नया मान बनाया जाता है। अन्यथा,