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

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

एक बाइनरी ट्री दिया गया है, कार्य यह जांचना है कि यह फुल बाइनरी ट्री है या नहीं। एक बाइनरी ट्री को फुल बाइनरी ट्री कहा जाता है यदि प्रत्येक नोड के शून्य या दो बच्चे हैं।

उदाहरण के लिए

इनपुट-1

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

आउटपुट:

1

व्याख्या: लीफ नोड को छोड़कर हर नोड के दो बच्चे हैं, इसलिए यह एक फुल बाइनरी ट्री है।

इनपुट-2: 

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

आउटपुट:

0

व्याख्या: नोड 2 का केवल एक बच्चा है, इसलिए यह फुल बाइनरी ट्री नहीं है।

इस समस्या को हल करने का दृष्टिकोण

यह जांचने के लिए कि दिया गया बाइनरी ट्री फुल है या नहीं, हम बाएं सबट्री और दाएं सबट्री के लिए पुनरावर्ती रूप से जांच सकते हैं।

  • नोड्स और उसके बच्चों वाले दिए गए बाइनरी ट्री को इनपुट करें।
  • एक बूलियन फ़ंक्शन isFullBinaryTree(Node*root) रूट नोड को इनपुट के रूप में लेता है और यदि यह फुल बाइनरी ट्री है तो True लौटाता है, अन्यथा false।
  • बेस कंडीशन में, यदि रूट नोड NULL या खाली है, तो True लौटाएं।
  • यदि बायां सबट्री और दायां सबट्री NULL या खाली है, तो True लौटाएं।
  • अब आइए बाएं सबट्री और दाएं सबट्री में से प्रत्येक के लिए पुनरावर्ती रूप से जांचें और आउटपुट लौटाएं।

उदाहरण

#include<iostream>
using namespace std;
struct treenode {
    int data;
    treenode * left;
    treenode * right;
};
struct treenode * createNode(int d) {
    struct treenode * root = new treenode;
    root -> data = d;
    root -> left = NULL;
    root -> right = NULL;
    return root;
}
bool isFullBinaryTree(struct treenode * root) {
    if (root == NULL) {
        return true;
    }
    if (root -> left == NULL and root -> right == NULL) {
        return true;
    } else if (root -> left and root -> right) {
        return (isFullBinaryTree(root -> left) and isFullBinaryTree(root -> right));
    }
    return false;
}
int main() {
    struct treenode * root = NULL;
    root = createNode(1);
    root -> left = createNode(2);
    root -> right = createNode(3);
    root -> left -> right = createNode(4);
    root -> left -> left = createNode(5);
    root -> right -> left = createNode(6);
    if (isFullBinaryTree(root)) {
        cout << "1" << endl;
    } else {
        cout << "0" << endl;
    }
    return 0;
}

उपरोक्त कोड चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

0

व्याख्या: चूंकि दिए गए बाइनरी ट्री में सभी लीफ नोड्स के बच्चे नोड्स नहीं हैं, यह फुल बाइनरी ट्री नहीं है। इसलिए, हमें आउटपुट 0 मिलता है।

  1. Python में दिया गया ट्री सममित ट्री है या नहीं, इसकी जांच करने का प्रोग्राम Python में दिया गया ट्री सममित ट्री है या नहीं, इसकी जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें यह जांचना है कि ट्री सममित ट्री है या नहीं। एक ट्री को सममित कहा जाएगा यदि यह उसके दर्पण छवि लेने पर समान हो। इन दो ट्री में से पहला सममित है, लेकिन दूसरा नहीं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे। हम निम्नलिखित चरणों को रिकर्सिवली कॉल करे

  1. पायथन में बाइनरी ट्री के BST होने की जांच करने का प्रोग्राम पायथन में बाइनरी ट्री के BST होने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जांचना है कि क्या यह एक बाइनरी सर्च ट्री है या नहीं। जैसा कि हम जानते हैं एक BST के निम्न गुण होते हैं: इसके बाएं सबट्री के सभी नोड्स वर्तमान नोड के मान से छोटे होते हैं इसके दाएं सबट्री के सभी नोड्स वर्तमान नोड के मान से बड़े होते हैं ये गुण सभी नोड्स क

  1. पायथन में बाइनरी ट्री के पूर्ण होने की जांच करने का प्रोग्राम पायथन में बाइनरी ट्री के पूर्ण होने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जांचना है कि यह एक पूर्ण बाइनरी ट्री है या नहीं। जैसा कि हम जानते हैं एक पूर्ण बाइनरी ट्री में स्तर नोड्स से भरे होते हैं सिवाय संभवतः अंतिम स्तर के और अंतिम स्तर के सभी नोड्स जितना संभव हो उतना बाएं होते हैं। उदाहरण के लिए, यदि इनपुट जैसा है: तो आउटपुट