Drzewo BST

0

Witam postanowiłem pobawić się trochę strukturami trochu mnie przystawiło w drzewie bst nie wiem gdzie tkwi błąd.Mógłby mnie ktoś skorygować??Program się wiesza przy dodaniu elementu nie wiem co kompilatorowi się tam nie podoba.Pisałem to według książki do algorytmów Cormena.A oto kod programu.Prosiłbym o pomoc.Kod w Ansi C

#include<stdio.h>
#include<stdlib.h>
struct element
       {
       int key;
       struct element *right;
       struct element *left;
       struct element *p;
       };

struct element *Tree_insert(struct element *root,struct element *z);

main()
{
      struct element *root=NULL,*nowy=NULL;
      int liczba;
      char z;

      while(1)
      {
              puts("co chcesz zrobic\n");
              puts("d-dodac nowy element\n");

              z=getchar();

              switch(z)
              {
                       case 'd':
                            puts("Podaj liczbe do wstawienia\n");
                            scanf("%d",&liczba);
                            nowy=(struct element*)malloc(sizeof(struct element));
                            nowy->key=liczba;
                            root=Tree_insert(root,nowy);

                       break;

                       case 'q':
                            return 0;
              }

      }

}

struct element *Tree_insert(struct element *root,struct element *z)
{
                   struct element *y,*x;
                   x=root;

                   while(x!=NULL)
                   {
                                 y=z;
                                 if(z->key<x->key)
                                 x=x->left;
                                 else
                                 x=x->right;
                   }                   
z->p=y;
if(y==NULL)
root=z;
if(z->key<y->key)
y->left=z;
else y->right=z;

return root;
}
0

Na pewno nie inicjalizujesz wskaźników na struct element w Tree_insert, powinny być zainicjalizowane na NULL

0

Próbowałem i tak go wywala.

0

Dalej w instrukcji z->key<y->key, jak możesz to robić skoro dla pierwszego przebiegu y jest NULL, to nie możesz odwołać się do klucza.
Sprawdź dokładnie takie błędy

0

Jednak to inicjalizacja..Dzięki Ilona

Mógłby mi jeszcze ktoś powiedzieć czym różni się heap-size[A] od length[A] w przypadku implementacji kopca??Nie wiem od czego to uzależnić i zaimplementować

0

Jeśli dobrze mniemam to length[A] to jest rozmiar tablicy, która ma przechowywać elementy kopca, a heap-size to realna ilość elementów w kopcu, które są wpisywane do tej tablicy A

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0