Skocz do zawartości

k88

Użytkownicy
  • Postów

    1
  • Dołączył

  • Ostatnia wizyta

Osiągnięcia k88

Chicken

Chicken (1/13)

0

Reputacja

  1. k88

    Mały problem z BST

    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; }
×
×
  • Dodaj nową pozycję...