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

सी ++ में ऐरे कार्यान्वयन के साथ बाइनरी ट्री


एक बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें पेड़ के प्रत्येक नोड में अधिकतम दो चाइल्ड नोड हो सकते हैं। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के रूप में जाना जाता है।

एक साधारण बाइनरी ट्री है -

सी ++ में ऐरे कार्यान्वयन के साथ बाइनरी ट्री

पेड़ों का प्रतिनिधित्व करने के दो तरीके हैं,

  • गतिशील नोड प्रतिनिधित्व जो लिंक की गई सूची का उपयोग करता है
  • अनुक्रमिक प्रतिनिधित्व जो सरणी का उपयोग करता है।

यहां, हम बाइनरी ट्री के सरणी प्रतिनिधित्व के बारे में चर्चा करेंगे। इसके लिए हमें बीटी के नोड्स को नंबर देना होगा। यह संख्या 0 से (n-1) या 1 से n तक शुरू हो सकती है।

सरणी में नोड्स और उनके माता-पिता और चाइल्ड नोड्स की स्थिति प्राप्त करें।

जब हम 0 अनुक्रमणिका आधारित अनुक्रमण, . का उपयोग करते हैं

मान लीजिए पैरेंट नोड एक इंडेक्स पी है।

फिर, लेफ्ट_चाइल्ड नोड इंडेक्स (2*p)+ 1 पर है।

राइट_चाइल्ड नोड इंडेक्स (2*p) + 2 पर है।

रूट नोड इंडेक्स 0 पर है।

left_child इंडेक्स 1 पर है।

राइट_चाइल्ड इंडेक्स 2 पर है।

जब हम 1 अनुक्रमणिका आधारित अनुक्रमण, . का उपयोग करते हैं

मान लीजिए पैरेंट नोड इंडेक्स p, . पर है

राइट_नोड इंडेक्स (2*p) पर है।

लेफ्ट_नोड इंडेक्स (2*p)+1 . पर है ।

रूट नोड इंडेक्स 1 पर है।

left_child इंडेक्स 2 पर है।

राइट_चाइल्ड इंडेक्स 3 पर है।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
char tree[10];
int rootnode(char key){
   if(tree[0] != '\0')
      cout<<"Tree already had root";
   else
      tree[0] = key;
   return 0;
}
int leftchild(char key, int parent){
   if(tree[parent] == '\0')
      cout <<"\nCan't set child at"<<(parent * 2) + 1<<" , no parent found";
   else
      tree[(parent * 2) + 1] = key;
   return 0;
}
int rightchild(char key, int parent){
   if(tree[parent] == '\0')
      cout<<"\nCan't set child at"<<(parent * 2) + 2<<" , no parent found";
   else
      tree[(parent * 2) + 2] = key;
   return 0;
}
int traversetree(){
   cout << "\n";
   for(int i = 0; i < 10; i++){
      if(tree[i] != '\0')
         cout<<tree[i];
      else
         cout<<"-";
   }
   return 0;
}
int main(){
   rootnode('A');
   rightchild('C', 2);
   leftchild('D', 0);
   rightchild('E', 1);
   rightchild('F', 2);
   traversetree();
   return 0;
}

आउटपुट

Can't set child at6 , no parent found
Can't set child at6 , no parent found
AD--E-----

  1. C++ में बाइनरी ट्री प्रिंट करें

    मान लीजिए कि हमें इन नियमों के आधार पर m*n 2D स्ट्रिंग सरणी में एक बाइनरी ट्री प्रदर्शित करना है - पंक्ति संख्या m दिए गए बाइनरी ट्री की ऊंचाई के समान होनी चाहिए। कॉलम संख्या n हमेशा एक विषम संख्या होनी चाहिए। रूट नोड का मान पहली पंक्ति के ठीक बीच में रखा जाना चाहिए जिसे इसे रखा जा सकता है। स्तंभ औ

  1. C++ में बाइनरी ट्री प्रूनिंग

    मान लीजिए कि हमारे पास एक बाइनरी ट्री का हेड नोड रूट है, जहां अतिरिक्त रूप से प्रत्येक नोड का मान या तो 0 या 1 है। हमें वही ट्री ढूंढना है जहां प्रत्येक सबट्री जिसमें 1 नहीं है, को हटा दिया गया है। तो अगर पेड़ जैसा है - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक पुनरावर्ती विधि को

  1. सी ++ में ऐरे कार्यान्वयन के साथ बाइनरी ट्री

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