Skocz do zawartości

Mały problem z BST


k88

Rekomendowane odpowiedzi

Napisałem BST (Binary Search Tree), ale niestety nie do końca działa. Proszę o pomoc w znalezieniu błędów.

Oto Kod Programu:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

struct Wezel
{
       double Klucz;
       int Wart;
       Wezel *Left;
       Wezel *Right;
};

Wezel *korzen;

void Wstaw (Wezel *korzen, double _Klucz, int _Wart)
{
      if (korzen==NULL)
      {
                  Wezel *korzen=new Wezel;
                  korzen->Klucz=_Klucz;
                  korzen->Wart=_Wart;
                  korzen->Left=NULL;
                  korzen->Right=NULL;
      }
      else if(_Klucz < korzen->Klucz)
                  Wstaw(korzen->Left, _Klucz, _Wart);
      else if(_Klucz > korzen->Klucz)
                  Wstaw(korzen->Right, _Klucz, _Wart);
}

void Wyszukaj (Wezel *korzen, double _Klucz)
{
     if (korzen == NULL)
         printf("Podany klucz nie istnieje");
     else
     if (korzen->Klucz == _Klucz)
         printf("Podany klucz istnieje");
     else
     if (_Klucz < korzen->Klucz)
         Wyszukaj(korzen->Left, _Klucz);
     else
     if (_Klucz > korzen->Klucz)
         Wyszukaj (korzen->Right, _Klucz);
}

void Usun (Wezel *korzen, double _Klucz)
{
     if ((korzen->Left == NULL) && (korzen->Right == NULL)) // korzen jest lisciem
          korzen=NULL;
     else
     if ((korzen->Left != NULL) && (korzen->Right == NULL)) // korzen ma jednego syna (z lewej)
          korzen=korzen->Left;
     else
     if ((korzen->Left == NULL) && (korzen->Right !=NULL))  // korzen ma jednego syna (z prawej)
          korzen=korzen->Right;


}

void Wypisz (Wezel *korzen)
{
     std::cout << korzen->Klucz << " , " << korzen->Wart << "\n";
     if(korzen->Left != NULL) Wypisz (korzen->Left);
     if(korzen->Right != NULL) Wypisz (korzen->Right);
}

int main()
{

    Wstaw(korzen, 1, 7);
    Wstaw(korzen, 2, 43);
    Wypisz(korzen);
    Wyszukaj(korzen, 1);
    Usun(korzen, 1);
    Wypisz(korzen);
    system("PAUSE");
    return EXIT_SUCCESS;
}

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...