BST con una recursividad y estructuras dadas

votos
0

Tengo que codificar algunos métodos para la BST y tengo algunos problemas, me explico.

Tengo las siguientes estructuras:

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

y

struct tree {
    struct node *root;
};

junto con las siguientes funciones:

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

    return T;
}

y

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

    return N;
}

Y en mi principal Debo llamar a este (por ejemplo):

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

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

Lo que tengo que hacer es crear el insertKey función (int i, estructura de árbol * T) usando la recursión.

Yo quería hacer algo como

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

Pero no llegó muy lejos, utilizando la recursividad permitiría que llame a insertKey nuevo, pero me parece que no puede utilizar un nodo y un árbol de la misma manera.

¿Alguien sabe cómo podría hacerlo sin alterar las estructuras dadas?

Muchas gracias.

Publicado el 20/03/2011 a las 19:16
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Su insertKey lleva un árbol como su argumento. Un árbol es sólo un puntero a la parte superior.

Lo que te recomiendo hacer es escribir una función que toma insertKey un Nodo de su argumento. También en esta función, usted tiene que comprobar para ver si hay otro árbol en el hijo izquierdo / derecho.

Actualmente se acaba de construir un nuevo nodo, independientemente de lo que está allí. Esto sobrescribirá cualquier inserciones anteriores.

Respondida el 20/03/2011 a las 19:47
fuente por usuario

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