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

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

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

उदाहरण के लिए

इनपुट-1

<मजबूत> C++ प्रोग्राम यह जांचने के लिए कि दिया गया बाइनरी ट्री एक पूर्ण बाइनरी ट्री है या नहीं

आउटपुट:

1

स्पष्टीकरण: लीफ नोड को छोड़कर प्रत्येक नोड में दो बच्चे होते हैं, इसलिए यह एक पूर्ण बाइनरी ट्री है।

इनपुट-2:

<मजबूत> C++ प्रोग्राम यह जांचने के लिए कि दिया गया बाइनरी ट्री एक पूर्ण बाइनरी ट्री है या नहीं

आउटपुट:

0

स्पष्टीकरण: नोड 2 में केवल एक बच्चा है, इसलिए यह पूर्ण बाइनरी ट्री नहीं है।

इस समस्या को हल करने का तरीका

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

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

उदाहरण

#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. पायथन में दिया गया पेड़ सममित पेड़ है या नहीं, यह जांचने के लिए कार्यक्रम

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

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

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

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

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