Αναδρομική Συνάρτηση Εισαγωγής σε Δυαδικό Δένδρο

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
alex599
Δημοσιεύσεις: 66
Εγγραφή: 17 Δεκ 2008 01:11
Τοποθεσία: Πάτρα

Αναδρομική Συνάρτηση Εισαγωγής σε Δυαδικό Δένδρο

Δημοσίευση από alex599 » 02 Απρ 2010 18:43

Προσπαθώ να φτιάξω μια συνάρτηση εισαγωγή δεδομένων σε δυαδικό δένδρο η οποία να είναι αναδρομική (δεν είναι εργασία-απλά έτσι μου ήρθε) και έχω φτιάξει το εξής:

Κώδικας: Επιλογή όλων

void binary_tree::insert(int number,node *temp){
     if (temp==NULL){
        temp=new node;
        temp->data=number;
        temp->right=temp->left=NULL;               
     }
     else{
          if (number>temp->data) insert(number,temp->right);
          else insert(number,temp->left);
     }
}
Παρόλα αυτά δεν μου τρέχει. Μπορεί κάποιος να μου εξηγήσει που είναι το λάθος διότι δεν βλέπω κάποιο! Η κλήση της συνάρτησης γίνεται ως Tree.insert(κάποιος αριθμός,Tree.root);

EDIT: Άκυρο!! Υπάρχουν πολλά λάθη και δεν γίνεται νομίζω διότι αναδρομικά αλλάζουν οι δείκτες και αν ελέγχουμε αν πάμε δεξιά ή αριστερά γίνονται λάθη. Καλύτερα με while-loop.
while(!dead()) ++knowledge;

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Αναδρομική Συνάρτηση Εισαγωγής σε Δυαδικό Δένδρο

Δημοσίευση από virxen75 » 02 Απρ 2010 20:22

αυτό ψάχνεις?

Κώδικας: Επιλογή όλων

struct node* insert(struct node* node, int data) {
  // 1. If the tree is empty, return a new, single node
  if (node == NULL) {
    return(newNode(data));
  }
  else {
    // 2. Otherwise, recur down the tree
    if &#40;data <= node->data&#41; node->left = insert&#40;node->left, data&#41;;
    else node->right = insert&#40;node->right, data&#41;;

    return&#40;node&#41;; // return the &#40;unchanged&#41; node pointer
  &#125;
&#125; 

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης