मैं पेड़ कैसे बना सकते हैं?

वोट
1

मैं एक BST बनाने के लिए कोशिश कर रहा हूँ और inorder, क्रंमोत्तर, और अग्रिम आदेश मुद्रित करने की जरूरत है।

बात के बारे में मेरे में इस पेड़ को बनाने का तरीका है यकीन नहीं है main()समारोह।

struct Tree_Node
{
    Tree_Node *right;
    Tree_Node *left;
    int info;
};

class bTree
{
private:
    Tree_Node *root;
public:
    bTree();
    void bTree::Insert(Tree_Node*& tree, int item);
    void bTree::preorderPrint(Tree_Node *root);
};

bTree::bTree()
{
    root = NULL;
}


void bTree::Insert(Tree_Node*& tree, int item)
{
  if (tree == NULL)
  {
    tree = new Tree_Node;
    tree->right = NULL;
    tree->left = NULL;
    tree->info = item;
  }
  else if (item < tree->info)
    Insert(tree->left, item);    
  else
    Insert(tree->right, item);   
} 

void bTree::preorderPrint(Tree_Node *root)
{
    if ( root != NULL ) 
    {
        cout << root->info <<  ;
        preorderPrint( root->left );   
        preorderPrint( root->right );   
    }
}

void main()
{
// This is where I need help at
// I'm not sure how to insert a new node

    bTree Test;
    Test.Insert(    
}
08/12/2009 को 07:27
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
2

चीजों के दिखता से, आप बस लिख सकते हैं

Test.Insert(Test.root, 3); // Insert 3
Test.Insert(Test.root, 4); // Insert 4

और कहा कि काम करना चाहिए। बेशक, आप जड़ को सार्वजनिक करना होगा।

और आपको लगता है कि सार्वजनिक करने की जरूरत नहीं है - हालांकि, इस थोड़ा अजीब के बाद से पहली पैरामीटर हमेशा bTree.root हो जाएगा है। याद रखें कि आपके डेटा प्रकार के उपयोगकर्ता (आप या कोई और) इस तरह के नोड्स के रूप में आंतरिक के बारे में परवाह नहीं करना चाहिए कि - वे केवल अपने डेटा के बारे में परवाह। इसके बजाय, मैं एक सुविधा बनाने की सलाह देते हैं Insertइस ओवरलोडिंग कहा जाता है - विधि है जो केवल एक पूर्णांक (नहीं एक पेड़ नोड) लेने के लिए की जरूरत है।

void bTree::Insert(int item)
{
    Insert(root, item);
}

// Keep the other insert method, but make it private.

तो फिर तुम सिर्फ लिख सकते हैं:

Test.Insert(3);
Test.Insert(4);
08/12/2009 को 07:37
का स्रोत उपयोगकर्ता

वोट
1
void bTree::Insert(int item)
{
  Tree_Node * node = new Tree_Node;
  node->left = NULL;
  node->right = NULL;
  node->info = item;
  if (root == NULL)
  {
    root = node;
    return;
  }
  Tree_Node * t = root;
  Tree_Node * p = root;
  while(1)
  {
    if (item < t->info)
    {
       t = t->left;
       if(t == NULL)
       {
          p->left = node;
          return;
       }
    }
    else if(item > t->info)
    {
       t = t->right;
       if(t == NULL)
       {
          p->right = node;
          return;
       }
    }
    else //item already exists in the tree
       return;
    p = t;
  }

} 

//now you can insert nodes like
Test.Insert(5);
Test.Insert(6);
08/12/2009 को 07:46
का स्रोत उपयोगकर्ता

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