BST avec une récursivité et des structures données

voix
0

Je dois coder des méthodes pour un BST et j'ai quelques problèmes, laissez-moi vous expliquer.

Je les structures suivantes:

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

et

struct tree {
    struct node *root;
};

en même temps que les fonctions suivantes:

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

    return T;
}

et

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

    return N;
}

Et dans mon principal que je dois appeler cela (par exemple):

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

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

Ce que je dois faire est de créer la fonction insertKey (int i, arbre struct * T) en utilisant la récursion.

Je voulais faire quelque chose comme

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);
        }
    }
}

Mais il ne se semble très loin, en utilisant la récursion me permettrait d'appeler insertKey à nouveau, mais je ne peux pas utiliser un noeud et un arbre de la même façon.

Est-ce que quelqu'un sait comment je pouvais le faire sans modifier les structures données?

Merci beaucoup.

Créé 20/03/2011 à 19:16
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Votre insertKey prend un arbre comme argument. Un arbre est seulement un pointeur vers le sommet.

Ce que je vous recommande de faire est d'écrire une fonction insertKey qui prend un nœud pour son argument. De plus dans cette fonction, vous devez vérifier s'il y a un autre arbre sur l'enfant gauche / droite.

À l'heure actuelle que vous venez de construire un nouveau nœud indépendamment de ce qui est là. Cela remplacera toutes les insertions précédentes.

Créé 20/03/2011 à 19:47
source utilisateur

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