द्विआधारी खोज वृक्ष समस्या

वोट
-2

मैं इस कार्यक्रम में विभाजन गलती का सामना करना पड़ रहा है। प्रवाह के रूप में मैं पता लगा इसे होने की सही हो रहा है। कृपया, मेरी मदद को इस कार्यक्रम में त्रुटि पता लगाने के।

#include<iostream>
#include<cstdlib>

using namespace std; 

struct node 
{ 
    int data; 
    struct node* left; 
    struct node* right; 
}; 

typedef struct node* Node; 
void insert(Node,int); 
Node root = NULL; 
int main() 
{ 
    insert(root,2); 
    insert(root,1); 
    insert(root,3); 

    cout<<root->data<< <<root->left->data<< <<root->right->data<<endl; 
    return 0; 
} 

void insert(Node nod,int val) 
{ 
    if(nod == NULL) 
    {
        Node newnode = new(struct node); 
        newnode->data = val; 
        newnode->left = NULL; 
        newnode->right = NULL; 
        nod = newnode; 
        if(root == NULL) 
        { 
            root = newnode; 
        } 
    } 
    else if(nod->data > val) 
    { 
        insert(node->left,val); 
    } 
    else if(nod->data < val) 
    {  
        insert(nod->right,val); 
    } 
}
04/09/2011 को 11:23
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
5

कुछ भी नहीं है कि वास्तव में सेट नहीं है root->leftया root->right। कॉल करने के लिए insert(node->left, val)नहीं कर रहे हैं आप क्या सोचते हैं यह करना होगा। आदेश वास्तव में छोड़ दिया और सही संकेत को संशोधित करने के लिए आपको संकेत का पता डालने के लिए पारित करने के लिए की जरूरत है। यानी insert(&node->left, val), और बदल insertइसे संभाल करने के लिए।

04/09/2011 को 11:40
का स्रोत उपयोगकर्ता

वोट
0

यह आसान है। अपने को डालने बदलें:

void insert(Node &nod,int val) 
{ 
  if(nod == NULL) {

    Node newnode = new(struct node); 
    newnode->data = val; 
    newnode->left = NULL; 
    newnode->right = NULL; 
    nod = newnode; 
  } 
  else if(nod->data > val) 
    { 
      insert(nod->left,val); 
    } 
  else if(nod->data < val) 
    {  
      insert(nod->right,val); 
    } 
}
04/09/2011 को 11:44
का स्रोत उपयोगकर्ता

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