#include<iostream>
using namespace std;
class Node{
public:
Node *lch,*rch;
char data;
Node(char data){
this->data=data;
this->lch=nullptr;
this->rch=nullptr;
}
};
class Tree{
private:
Node *root;
public:
Tree(){
root=nullptr;
}
void Road(char p,Node *T=root);
public:
void init(Node* &T=root){
char data;
cin>>data;
if(data!='#'){
T=new Node(data);
init(T->lch);
init(T->rch);
}
}
};
void Tree::Road(char p,Node *T){
if(!T) return;
Road(p,T->lch);
Road(p,T->rch);
if(T->data==p){
cout<<T->data<<"\t";
p=T->data;
}
}
int main(){
Tree T;
T.init();
T.Road('A');
return 0;
}
कक्षा वृक्ष में, यदि मैं "स्थिर नोड * रूट" का उपयोग करता हूं, तो यह अच्छी तरह से काम करेगा। तो मुझे "स्थैतिक" क्यों जोड़ना चाहिए? और जब मैंने "स्थिर नोड * रूट" का उपयोग किया, तो मुझे एक नई त्रुटि मिली कि " test.cpp :(.rdata$.refptr._ZN4Tree4rootE[.refptr._ZN4Tree4rootE]+0x0): 'ट्री :: रूट' के लिए अपरिभाषित संदर्भ "
0
Mr.zhao
13 नवम्बर 2020, 14:14
1 उत्तर
सबसे बढ़िया उत्तर
डिफ़ॉल्ट तर्क में Node *T=root
अवैध है क्योंकि डिफ़ॉल्ट तर्कों की this
तक पहुंच नहीं है। आप इसके बजाय दो ओवरलोड का उपयोग कर सकते हैं, एक Node*
पैरामीटर के साथ और दूसरा बिना।
void Road(char p) { Road(p, root); }
void Road(char p, Node* T);
0
n. 'pronouns' m.
13 नवम्बर 2020, 14:47