इस समारोह के साथ समस्या क्या है

वोट
1

हाय मैं एक BST लिख रहा था और बाल जोड़ने के लिए समारोह निम्नलिखित लिखा।

void addChild(T value)  
{  
  temp = root;  
  while(0 != temp)  
  {  
     temp1 = temp;  
     if(value  > temp->getValue())  
          temp = temp->getRightChild();   
      else  
           temp = temp->getLeftChild();  
  }  
  if(temp1->getValue() > value)  
  {   
       temp1->setRightChild(new Child(value));  
  }  
  else  
  {  
       temp1->setLeftChild(new Child(value));  
  }  
}  

मैं 23 12 122 1 121 15 इनपुट के रूप में दे रहा हूँ। रूट नोड 23 जो मैं वर्ग के निर्माता में बनाने रहा हूँ।

समस्या: जब मैं पेड़ ट्रेवर्सल कर रहा हूँ मैं केवल 23 और 15 आउटपुट के रूप में हो रही है। प्रश्न : क्या मैं इस समारोह में गलत कर रहा हूँ?

23/12/2010 को 10:42
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
1

प्रयत्न:

if(value > temp1->getValue()) 

... अन्यथा अपने प्रविष्टि हालत ऊपर पाश में एक जगह के लिए अपनी खोज से अलग है।

23/12/2010 को 10:47
का स्रोत उपयोगकर्ता

वोट
1

स्थिति को मिलाया जाता है।

अगर (मूल्य> temp-> getValue ()): GetRight

के विपरीत है

अगर (temp1-> getValue ()> मूल्य): setRight

अभी पिछले हालत बदलने का प्रयास करें।

23/12/2010 को 10:47
का स्रोत उपयोगकर्ता

वोट
0

मैं कप्तान और sje द्वारा पिछले जवाब से सहमत हैं, लेकिन वे गंभीर अपने पेड़ के underpopulation की व्याख्या नहीं करते, हम कहना चाहिए,। संभव समस्या यह है कि आप जोड़ना है मूल्य के एक बच्चे के रूप temp1 , पिछले बच्चे को पूरी तरह त्यागकर। यही कारण है कि शायद टी में किया जाता है :: setRightChild () और टी :: setLeftChild () काम करता है।

23/12/2010 को 10:52
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more