BST με μια αναδρομή και με δεδομένο δομές

ψήφοι
0

Πρέπει να κωδικοποιήσει κάποιες μεθόδους για BST και έχω κάποια προβλήματα, επιτρέψτε μου να εξηγήσω.

Έχω τις ακόλουθες δομές:

struct node {
    struct node *lChild; 
    struct node *rChild; 
    int value; 
};

και

struct tree {
    struct node *root;
};

μαζί με τις ακόλουθες λειτουργίες:

struct tree* constructNewTree()
{
    struct tree *T=malloc(sizeof(struct tree));
    T->root=NULL;

    return T;
}

και

struct node* constructNewNode(int i)
{
    struct node *N=malloc(sizeof(struct node));
    N->value=i;
    N->lChild=NULL;
    N->rChild=NULL;

    return N;
}

Και στην κύρια μου, πρέπει να καλέσετε αυτό (για παράδειγμα):

int main()
{
    struct tree *T;
    T=constructNewTree();

    insertKey(5,T);
    insertKey(2,T);
    insertKey(9,T);
    return 0;
}

Αυτό που έχετε να κάνετε είναι να δημιουργήσετε το insertKey λειτουργία (int i, struct δέντρο * T) με τη χρήση της αναδρομής.

Ήθελα να κάνω κάτι σαν

void insertKey(int i, struct tree *T)
{
    if (T->root==NULL) {
        T->root=constructNewNode(i);
        return;
    }
    else {
        if (i<=T->root->value) {
            T->root->lChild=constructNewNode(i);
        else if (i>T->root->value) {
            T->root->rChild=constructNewNode(i);
        }
    }
}

Αλλά δεν πάμε πολύ μακριά, χρησιμοποιώντας την αναδρομή, θα μου επιτρέψετε να καλέσετε insertKey και πάλι, αλλά δεν μπορώ να φαίνεται για να χρησιμοποιήσετε ένα κόμβο και ένα δέντρο με τον ίδιο τρόπο.

Ξέρει κανείς πώς μπορώ να το κάνουμε αυτό χωρίς να αλλοιώνει τις δεδομένες δομές;

Ευχαριστώ πολύ.

Δημοσιεύθηκε 20/03/2011 στις 19:16
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

insertKey σας παίρνει ένα δέντρο ως το επιχείρημά της. Ένα δέντρο είναι μόνο ένας δείκτης στην κορυφή.

Αυτό που συνιστούμε να κάνετε είναι να γράψετε μια συνάρτηση insertKey που παίρνει μια Κόμβος για την επιχειρηματολογία του. Επίσης, σε αυτή τη λειτουργία, θα πρέπει να ελέγξετε για να δείτε αν υπάρχει ένα άλλο δέντρο στα αριστερά / δεξιά παιδί.

Προς το παρόν μπορείτε μόνο να κατασκευάσει ένα νέο κόμβο ανεξάρτητα από το τι υπάρχει. Αυτό θα αντικαταστήσει όλες τις προηγούμενες προσθήκες.

Απαντήθηκε 20/03/2011 στις 19:47
πηγή χρήστη

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