Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

B-drzewo

Ostatnio zmodyfikowano 2017-06-14 15:08
Autor Wiadomość
1551
Temat założony przez niniejszego użytkownika
B-drzewo
» 2017-06-13 21:44:37
Witam.

Muszę zrobić program tworzący B-drzewo z funkcjami dodwania, usuwania elementów oraz wyświetlania.
Zrobiłem do tej pory jedynie zarys struktur i zaciąłem się, gdyż nie mogę wpaść na pomysł jak zrealizować swoje zamiary.

C/C++
#include<iostream>

using namespace std;

struct Node
{
    int key; //klucz do poszukiwań danego węzła - elementy posegregowane jak w tablicy od 0 do n
    int value; //wartość przechowywana
    Node * left; //wskaźnik na lewego syna
    Node * right; //wskaźnik na prawego syna
    Node( int k ) //konstruktor
    {
        left = NULL;
        right = NULL;
        value = k;
        key = 0;
    }
};

struct Btree
{
    Node * root; //wskaźnik na korzeń
    Btree()
    {
        root = NULL;
    }
    void insert( int k );
   
};

void Btree::insert( int k )
{
    if( root == NULL )
         root = new Node( k ); //tutaj nie wiem czy zapis jest poprawny - zamiarem było przypisanie do wskaźnika "root" adresu na nowy węzeł
    else
    {
        if( k > Value && right != NULL ) //i tutaj mam problem, nie wiem jaki dać warunek, aby przeszukać drzewo do miejsca w którym ma wstawić dany element(nie wiem jak to zapisać, ale chciałbym aby sprawdzał czy wartość dodawana jest większa od wartości aktualnego węzła oraz czy jego prawy syn istnieje, jeśli tak to przejdź na prawego syna i sprawdź ten sam warunek aż do momentu, kiedy takiego syna nie będzie(wskaźnik right na null) to wstaw nowy element o wartości k w to miejsce, a dla mniejszej odwrotnie
       
    }
}



int main()
{
   
    Btree * Ex = new Btree;
    Ex->insert( 10 );
   
    system( "Pause" );
   
    return 0;
}

Mógłby ktoś pomóc ? Chociaż ze wstawianiem elementów, usuwanie już sam analogicznie wykombinuję mam nadzieję.
P-162511
pekfos
» 2017-06-13 23:40:56
Jak na razie to jest drzewo binarne, nie b-drzewo.

nie wiem jaki dać warunek, aby przeszukać drzewo do miejsca w którym ma wstawić dany element
To zacznij od implementacji wyszukiwania. Jeśli nie znajdziesz elementu, znajdziesz miejsce, gdzie element należy umieścić.
P-162522
1551
Temat założony przez niniejszego użytkownika
» 2017-06-14 15:08:15
Dziękuję. Rzeczywiście przeszukiwanie jest pomocne.
P-162534
« 1 »
  Strona 1 z 1