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

C++ में बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करें


इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करना होता है।

बाइनरी ट्री एक पेड़ है जिसमें एक नोड में अधिकतम 2 चाइल्ड नोड हो सकते हैं। नोड या वर्टेक्स में कोई नोड नहीं हो सकता है, एक बच्चा या दो चाइल्ड नोड हो सकते हैं।

उदाहरण -

C++ में बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करें

आंतरिक नोड एक नोड है जिसमें कम से कम एक बच्चा हो सकता है यानी नॉन-लीफ नोड एक आंतरिक नोड है।

आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -

C++ में बाइनरी ट्री के सभी आंतरिक नोड्स को प्रिंट करें

आउटपुट - 7 4 9

इस समस्या को हल करने के लिए, हम BFS (चौड़ाई-पहली खोज) ट्रैवर्सल का उपयोग करके बाइनरी ट्री को पार करेंगे।

ट्रैवर्सल के दौरान हम नोड्स को एक कतार में धकेलेंगे। जब हम कतार से तत्वों को निकालते हैं, तो हम पेड़ के उन सभी नोड्स को प्रिंट करेंगे जिनमें कोई चाइल्ड नोड नहीं है।

उदाहरण

हमारा तर्क नीचे दिए गए कोड द्वारा कार्यान्वित किया जाता है -

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node *left, *right;
   Node(int data){
      left = right = NULL;
      this->data = data;
   }
};
void printNonLeafNodes(Node* root) {
   queue<Node*> treeNodes;
   treeNodes.push(root);
   while (!treeNodes.empty()) {
      Node* curr = treeNodes.front();
      treeNodes.pop();
      bool isInternal = 0;
      if (curr->left) {
         isInternal = 1;
         treeNodes.push(curr->left);
      }
      if (curr->right) {
         isInternal = 1;
         treeNodes.push(curr->right);
      }
      if (isInternal)
         cout<<curr->data<<"\t";
   }
}
int main() {
   Node* root = new Node(43);
   root->left = new Node(12);
   root->right = new Node(78);
   root->left->left = new Node(4);
   root->right->left = new Node(9);
   root->right->right = new Node(1);
   root->right->right->right = new Node(50);
   root->right->right->left = new Node(25);
   cout<<"All internal Nodes of the binary tree are :\n";
   printNonLeafNodes(root);
   return 0;
}

आउटपुट

All internal Nodes of the binary tree are −
43 12 78 1
. हैं
  1. बाइनरी सर्च ट्री के सभी विषम नोड्स को C++ में प्रिंट करें

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

  1. बाइनरी ट्री के नोड्स को प्रिंट करें क्योंकि वे C++ प्रोग्रामिंग में लीफ नोड बन जाते हैं।

    एक बाइनरी ट्री को देखते हुए, हमें इसके लीफ नोड्स को प्रिंट करना होगा और फिर हमें उन लीफ नोड्स को हटाना होगा और तब तक दोहराना होगा जब तक कि ट्री में कोई नोड न बचे। उदाहरण तो समस्या का परिणाम होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक तरीका अपनाया है जहां हम डीएफएस लागू कर रहे है

  1. C++ प्रोग्रामिंग में एक बाइनरी ट्री में सभी नोड्स के प्रिंट स्तर।

    बाइनरी ट्री को देखते हुए, कार्य 1 से n तक के नोड में संग्रहीत प्रत्येक कुंजी से जुड़े स्तर को प्रिंट करना है उपरोक्त पेड़ में, नोड्स हैं - 10 लेवल 13 पर और 211 लेवल 2140 पर, 162, 100 और 146 लेवल 3 पर कुंजी को देखते हुए प्रोग्राम को उस विशेष कुंजी के स्तर को प्रिंट करना होगा। उदाहरण एल्गोरिदम न