BST egy rekurzió adott struktúrák

szavazat
0

Meg kell kódolni bizonyos módszerek a BST és van néhány probléma, hadd magyarázzam meg.

Én a következő szerkezetek:

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

és

struct tree {
    struct node *root;
};

valamint a következő funkciókat:

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

    return T;
}

és

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

    return N;
}

És a fő kell hívnom ezt (például):

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

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

Mit kell tennem, hogy megteremtse a funkció insertKey (int i, struct fa * T) a rekurziót.

Akartam csinálni valami hasonló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);
        }
    }
}

De ez nem jut messzire, a rekurzió lehetővé tenné, hogy hívjam insertKey újra, de nem úgy tűnik, hogy egy csomópont és egy fa ugyanúgy.

Tudja valaki, hogyan tudnám csinálni, hogy anélkül, hogy az adott szerkezetek?

Nagyon szépen köszönjük.

A kérdést 20/03/2011 19:16
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Az insertKey vesz egy fa az argumentuma. A fa csak egy mutató a csúcsra.

Mi azt javasoljuk, hogy tennie levelet insertKey funkciója, amely a csomópont annak érv. Szintén ezt a funkciót, akkor ellenőrizze, hogy ha van egy másik fa a bal / jobb gyermek.

Jelenleg csak építeni egy új csomópont függetlenül mi van ott. Ez felülír minden korábbi betoldások.

Válaszolt 20/03/2011 19:47
a forrás felhasználó

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