Bir özyineleme ve verilen yapılarla BST

oy
0

Bir BST için bazı yöntemler kodlamak var ve bazı sorunlar var, açıklamama izin ver.

Aşağıdaki yapılara sahip:

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

ve

struct tree {
    struct node *root;
};

Aşağıdaki fonksiyonları ile birlikte:

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

    return T;
}

ve

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

    return N;
}

Ve benim main ben (örneğin) bu aramalıdır:

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

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

Ne yapmak zorunda fonksiyon insertKey oluşturmaktır (i, yapı ağacı * T int) özyineleme kullanarak.

Ben böyle bir şey yapmak istedim

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

Ama bana yine insertKey çağırmak ama bir düğüm ve bir ağaç aynı şekilde kullanmak gibi olamaz sağlayacak özyineleme kullanılarak çok uzak almaz.

Herkes bana verilen yapıların değiştirmeden bunu yapabilir biliyor mu?

Çok teşekkür ederim.

Oluştur 20/03/2011 saat 19:16
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Kişisel insertKey Argüman olarak Ağacı sürer. Bir Ağacı çok üstüne sadece bir göstericidir.

Ne tavsiye yapmanız onun argüman için Düğümü götüren bir insertKey işlevini yazmaya. Ayrıca, bu işlevini, sağ / sol çocuğun başka ağaç olup olmadığını görmek için kontrol etmek gerekir.

Orada ne Halen sadece bakılmaksızın yeni düğümü oluşturulur. Bu, herhangi bir önceki eklemeleri üzerine yazılır.

Cevap 20/03/2011 saat 19:47
kaynak kullanıcı

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