logo

Struktura danych drzewa

Czytamy liniowe struktury danych, takie jak tablica, lista połączona, stos i kolejka, w których wszystkie elementy są ułożone sekwencyjnie. Dla różnych rodzajów danych wykorzystywane są różne struktury danych.

Przy wyborze struktury danych bierze się pod uwagę kilka czynników:

    Jakiego rodzaju dane należy przechowywać?: Może istnieć możliwość, że określona struktura danych będzie najlepiej dopasowana do pewnego rodzaju danych.Koszt operacji:Jeśli chcemy zminimalizować koszty operacji dla najczęściej wykonywanych operacji. Przykładowo mamy prostą listę, na której musimy wykonać operację wyszukiwania; następnie możemy utworzyć tablicę, w której elementy są przechowywane w posortowanej kolejności, aby wykonać wyszukiwanie binarne . Wyszukiwanie binarne działa bardzo szybko w przypadku prostej listy, ponieważ dzieli przestrzeń wyszukiwania na połowę.Zużycie pamięci:Czasami chcemy struktury danych, która zużywa mniej pamięci.

Drzewo jest także jedną ze struktur danych reprezentujących dane hierarchiczne. Załóżmy, że chcemy pokazać pracowników i ich stanowiska w formie hierarchicznej, można to przedstawić w sposób pokazany poniżej:

Drzewo

Powyższe drzewo przedstawia hierarchia organizacji jakiejś firmy. W powyższej strukturze Jan jest Dyrektor generalny firmy, a John ma dwóch bezpośrednich podwładnych o nazwie jako Steve'a I Rohana . Steve ma trzech bezpośrednich podwładnych Lee, Bob, Ella Gdzie Steve'a jest menadżerem. Bob ma dwóch bezpośrednich podwładnych Być I Emma . Emma ma dwóch bezpośrednich podwładnych o nazwie Tomek I Raj . Tom ma jednego bezpośredniego podwładnego Rachunek . Ta szczególna struktura logiczna jest znana jako a Drzewo . Jego struktura jest podobna do prawdziwego drzewa, dlatego nosi nazwę Drzewo . W tej strukturze źródło znajduje się na górze, a jego gałęzie poruszają się w dół. Można zatem powiedzieć, że struktura danych typu Tree jest efektywnym sposobem przechowywania danych w sposób hierarchiczny.

Rozumiemy kilka kluczowych punktów struktury danych drzewa.

  • Drzewiastą strukturę danych definiuje się jako zbiór obiektów lub jednostek zwanych węzłami, które są ze sobą połączone w celu reprezentowania lub symulowania hierarchii.
  • Drzewiasta struktura danych jest nieliniową strukturą danych, ponieważ nie jest przechowywana w sposób sekwencyjny. Jest to struktura hierarchiczna, ponieważ elementy drzewa są ułożone na wielu poziomach.
  • W strukturze danych drzewa najwyższy węzeł nazywany jest węzłem głównym. Każdy węzeł zawiera pewne dane, a dane mogą być dowolnego typu. W powyższej strukturze drzewa węzeł zawiera nazwisko pracownika, zatem typem danych będzie string.
  • Każdy węzeł zawiera pewne dane oraz łącze lub odniesienie do innych węzłów, które można nazwać dziećmi.

Niektóre podstawowe terminy stosowane w strukturze danych drzewa.

Rozważmy strukturę drzewa, która jest pokazana poniżej:

Drzewo

W powyższej strukturze każdy węzeł jest oznaczony jakimś numerem. Każda strzałka pokazana na powyższym rysunku jest nazywana a połączyć pomiędzy dwoma węzłami.

    Źródło:Węzeł główny jest najwyższym węzłem w hierarchii drzewa. Innymi słowy, węzeł główny to taki, który nie ma żadnego rodzica. W powyższej strukturze węzeł o numerze 1 to węzeł główny drzewa. Jeśli węzeł jest bezpośrednio połączony z innym węzłem, nazywa się to relacją rodzic-dziecko.Węzeł podrzędny:Jeśli węzeł jest potomkiem dowolnego węzła, wówczas węzeł ten nazywany jest węzłem podrzędnym.Rodzic:Jeśli węzeł zawiera jakikolwiek podwęzeł, wówczas mówi się, że ten węzeł jest rodzicem tego podwęzła.Rodzeństwo:Węzły mające tego samego rodzica nazywane są rodzeństwem.Węzeł liścia:-Węzeł drzewa, który nie ma żadnego węzła potomnego, nazywany jest węzłem liścia. Węzeł liścia to najniższy węzeł drzewa. W drzewie ogólnym może znajdować się dowolna liczba węzłów liściowych. Węzły liściowe można również nazwać węzłami zewnętrznymi.Węzły wewnętrzne:Węzeł ma co najmniej jeden węzeł podrzędny, zwany węzłem wewnętrzny Węzeł nadrzędny: -Przodkiem węzła jest dowolny poprzedni węzeł na ścieżce od korzenia do tego węzła. Węzeł główny nie ma żadnych przodków. W drzewie pokazanym na powyższym obrazku węzły 1, 2 i 5 są przodkami węzła 10.Potomek:Bezpośredni następca danego węzła nazywany jest potomkiem węzła. Na powyższym rysunku liczba 10 jest potomkiem węzła 5.

Właściwości struktury danych drzewa

    Rekurencyjna struktura danych:Drzewo jest również znane jako rekurencyjna struktura danych . Drzewo można zdefiniować jako rekurencyjne, ponieważ wyróżniony węzeł w drzewiastej strukturze danych jest znany jako a Węzeł główny . Węzeł główny drzewa zawiera łącze do wszystkich korzeni jego poddrzew. Na poniższym rysunku lewe poddrzewo pokazano w kolorze żółtym, a prawe poddrzewo w kolorze czerwonym. Lewe poddrzewo można dalej podzielić na poddrzewa pokazane w trzech różnych kolorach. Rekurencja oznacza redukcję czegoś w sposób samopodobny. Zatem ta rekurencyjna właściwość drzewiastej struktury danych jest implementowana w różnych aplikacjach.
    Drzewo Liczba krawędzi:Jeśli jest n węzłów, to będzie n-1 krawędzi. Każda strzałka w strukturze reprezentuje łącze lub ścieżkę. Każdy węzeł, z wyjątkiem węzła głównego, będzie miał co najmniej jedno łącze przychodzące zwane krawędzią. Byłoby jedno ogniwo relacji rodzic-dziecko.Głębokość węzła x:Głębokość węzła x można zdefiniować jako długość ścieżki od korzenia do węzła x. Jedna krawędź stanowi jedną jednostkę długości ścieżki. Zatem głębokość węzła x można również zdefiniować jako liczbę krawędzi między węzłem głównym a węzłem x. Węzeł główny ma głębokość 0.Wysokość węzła x:Wysokość węzła x można zdefiniować jako najdłuższą ścieżkę od węzła x do węzła liścia.

W oparciu o właściwości struktury danych Tree, drzewa dzieli się na różne kategorie.

Implementacja drzewa

Drzewiastą strukturę danych można utworzyć poprzez dynamiczne tworzenie węzłów za pomocą wskaźników. Drzewo w pamięci można przedstawić w sposób pokazany poniżej:

Drzewo

Powyższy rysunek przedstawia reprezentację drzewiastej struktury danych w pamięci. W powyższej strukturze węzeł zawiera trzy pola. Drugie pole przechowuje dane; pierwsze pole przechowuje adres lewego dziecka, a trzecie pole przechowuje adres prawego dziecka.

W programowaniu strukturę węzła można zdefiniować jako:

 struct node { int data; struct node *left; struct node *right; } 

Powyższą strukturę można zdefiniować tylko dla drzew binarnych, ponieważ drzewo binarne może mieć maksymalnie dwoje dzieci, a drzewa generyczne mogą mieć więcej niż dwoje dzieci. Struktura węzła dla drzew ogólnych byłaby inna niż w przypadku drzewa binarnego.

polecenie instalacji npm

Zastosowania drzew

Oto zastosowania drzew:

    Przechowywanie danych w sposób naturalny hierarchiczny:Drzewa służą do przechowywania danych w strukturze hierarchicznej. Na przykład system plików. System plików przechowywany na dysku, plik i folder mają postać naturalnie hierarchicznych danych i są przechowywane w postaci drzew.Organizuj dane:Służy do porządkowania danych w celu sprawnego ich wstawiania, usuwania i wyszukiwania. Na przykład drzewo binarne ma czas logowania na wyszukiwanie elementu.Spróbuj:Jest to specjalny rodzaj drzewa, w którym przechowywany jest słownik. Jest to szybki i skuteczny sposób dynamicznego sprawdzania pisowni.Sterta:Jest to również drzewiasta struktura danych zaimplementowana przy użyciu tablic. Służy do implementacji kolejek priorytetowych.Drzewo B i Drzewo B+:B-Tree i B+Tree to drzewiaste struktury danych używane do implementowania indeksowania w bazach danych.Tabela routingu:Drzewiasta struktura danych jest również używana do przechowywania danych w tablicach routingu w routerach.

Rodzaje drzewiastej struktury danych

Poniżej przedstawiono typy drzewiastej struktury danych:

    Ogólne drzewo:Drzewo ogólne jest jednym z typów drzewiastej struktury danych. W drzewie ogólnym węzeł może mieć 0 lub maksymalnie n węzłów. Nie ma żadnych ograniczeń co do stopnia węzła (liczby węzłów, jaką może zawierać węzeł). Najwyższy węzeł w drzewie ogólnym nazywany jest węzłem głównym. Dzieci węzła nadrzędnego nazywane są poddrzewa .
    Drzewo
    Tam może być N liczba poddrzew w drzewie ogólnym. W drzewie ogólnym poddrzewa są nieuporządkowane, ponieważ nie można uporządkować węzłów w poddrzewie.
    Każde niepuste drzewo ma krawędź skierowaną w dół, a krawędzie te są połączone węzłami tzw węzły podrzędne . Węzeł główny jest oznaczony poziomem 0. Węzły mające tego samego rodzica nazywane są rodzeństwo . Drzewo binarne :Tutaj sama nazwa binarna sugeruje dwie liczby, tj. 0 i 1. W drzewie binarnym każdy węzeł drzewa może mieć maksymalnie dwa węzły podrzędne. Tutaj najwyższa oznacza, czy węzeł ma 0 węzłów, 1 węzeł czy 2 węzły.
    Drzewo
    Aby dowiedzieć się więcej o drzewie binarnym, kliknij link podany poniżej:
    https://www.javatpoint.com/binary-tree Drzewo wyszukiwania binarnego :Drzewo wyszukiwania binarnego to nieliniowa struktura danych, do której podłączony jest jeden węzeł N liczba węzłów. Jest to struktura danych oparta na węzłach. Węzeł może być reprezentowany w drzewie wyszukiwania binarnego za pomocą trzech pól, tj. części danych, lewego i prawego dziecka. Węzeł może być połączony z dwoma najwyższymi węzłami podrzędnymi w drzewie wyszukiwania binarnego, więc węzeł zawiera dwa wskaźniki (lewy wskaźnik podrzędny i prawy wskaźnik podrzędny).
    Każdy węzeł w lewym poddrzewie musi zawierać wartość mniejszą niż wartość węzła głównego, a wartość każdego węzła w prawym poddrzewie musi być większa niż wartość węzła głównego.

Węzeł można utworzyć za pomocą zdefiniowanego przez użytkownika typu danych, tzw struktura, jak pokazano niżej:

 struct node { int data; struct node *left; struct node *right; } 

Powyżej przedstawiono strukturę węzła z trzema polami: pole danych, drugie pole to lewy wskaźnik typu węzła, a trzecie pole to prawy wskaźnik typu węzła.

Aby dowiedzieć się więcej o drzewie wyszukiwania binarnego, kliknij link podany poniżej:

https://www.javatpoint.com/binary-search-tree

Jest to jeden z typów drzewa binarnego, lub można powiedzieć, że jest to odmiana drzewa wyszukiwania binarnego. Drzewo AVL spełnia właściwość drzewo binarne jak również z drzewo wyszukiwania binarnego . Jest to samobalansujące się drzewo wyszukiwania binarnego, które zostało wynalezione przez Adelsona Velsky’ego Lindasa . Tutaj samorównoważenie oznacza równoważenie wysokości lewego i prawego poddrzewa. Bilansowanie to mierzone jest w kategoriach czynnik równoważący .

Możemy uznać drzewo za drzewo AVL, jeśli drzewo jest zgodne z drzewem poszukiwań binarnych, a także czynnikiem równoważącym. Współczynnik równoważący można zdefiniować jako różnica między wysokością lewego poddrzewa a wysokością prawego poddrzewa . Wartość współczynnika równoważącego musi wynosić 0, -1 lub 1; dlatego każdy węzeł drzewa AVL powinien mieć wartość współczynnika równoważącego jako 0, -1 lub 1.

Aby dowiedzieć się więcej o drzewie AVL, kliknij link podany poniżej:

https://www.javatpoint.com/avl-tree

    Czerwono-Czarne Drzewo

Drzewo czerwono-czarne jest drzewem wyszukiwania binarnego. Warunkiem wstępnym drzewa czerwono-czarnego jest wiedza o drzewie wyszukiwania binarnego. W drzewie wyszukiwania binarnego wartość lewego poddrzewa powinna być mniejsza niż wartość tego węzła, a wartość prawego poddrzewa powinna być większa niż wartość tego węzła. Jak wiemy, złożoność czasowa wyszukiwania binarnego w przeciętnym przypadku jest logarytmiczna2n, najlepszym przypadkiem jest O(1), a najgorszym przypadkiem O(n).

Kiedy na drzewie wykonywana jest jakakolwiek operacja, chcemy, żeby nasze drzewo było zrównoważone tak, aby wszystkie operacje takie jak wyszukiwanie, wstawianie, usuwanie itp. zajmowały mniej czasu, a wszystkie te operacje miały złożoność czasową dziennik2N.

algorytm Bellforda

Drzewo czerwono-czarne to samobalansujące się drzewo wyszukiwania binarnego. Drzewo AVL jest zatem również drzewem wyszukiwania binarnego równoważącego wysokość dlaczego potrzebujemy czerwono-czarnego drzewa . W drzewie AVL nie wiemy, ile obrotów potrzeba do zrównoważenia drzewa, ale w drzewie czerwono-czarnym do zrównoważenia drzewa potrzebne są maksymalnie 2 rotacje. Zawiera jeden dodatkowy bit, który reprezentuje czerwony lub czarny kolor węzła, aby zapewnić równowagę drzewa.

    Drzewo rozłożyste

Struktura danych drzewa rozwinięcia jest także drzewem wyszukiwania binarnego, w którym ostatnio uzyskiwany dostęp do elementu jest umieszczany w pozycji korzenia drzewa poprzez wykonanie pewnych operacji obrotu. Tutaj, rozchylanie oznacza ostatnio używany węzeł. To jest samorównoważenie drzewo wyszukiwania binarnego nie mające wyraźnego warunku równowagi, np AVL drzewo.

Może istnieć możliwość, że wysokość drzewa rozgałęzionego nie jest zrównoważona, tj. wysokość lewego i prawego poddrzewa może się różnić, ale operacje na drzewie rozgałęzionym są następujące: spokój czas gdzie N to liczba węzłów.

Drzewo Splay jest drzewem zrównoważonym, ale nie można go uważać za drzewo zrównoważone pod względem wysokości, ponieważ po każdej operacji wykonywany jest obrót, który prowadzi do drzewa zrównoważonego.

    Treap

Struktura danych Treap pochodzi ze struktury danych Tree i Heap. Zawiera więc właściwości struktur danych drzewa i sterty. W drzewie wyszukiwania binarnego każdy węzeł lewego poddrzewa musi być równy lub mniejszy od wartości węzła głównego, a każdy węzeł prawego poddrzewa musi być równy lub większy od wartości węzła głównego. W strukturze danych sterty zarówno prawe, jak i lewe poddrzewo zawierają większe klucze niż korzeń; dlatego możemy powiedzieć, że węzeł główny zawiera najniższą wartość.

W strukturze danych treap każdy węzeł ma oba klucz I priorytet gdzie klucz pochodzi z drzewa wyszukiwania binarnego, a priorytet ze struktury danych sterty.

The Treap struktura danych ma dwie właściwości podane poniżej:

  • Prawe dziecko węzła>=bieżący węzeł i lewe dziecko węzła<=current node (binary tree)< li>
  • Elementy potomne dowolnego poddrzewa muszą być większe niż węzeł (sterta)
    Drzewo B

Drzewo B jest zrównoważone sposób drzewo gdzie M określa kolejność drzewa. Do tej pory czytaliśmy, że węzeł zawiera tylko jeden klucz, ale b-tree może mieć więcej niż jeden klucz i więcej niż 2 dzieci. Zawsze przechowuje posortowane dane. W drzewie binarnym możliwe jest, że węzły liści mogą znajdować się na różnych poziomach, ale w drzewie b wszystkie węzły liści muszą znajdować się na tym samym poziomie.

Jeśli porządek wynosi m, wówczas węzeł ma następujące właściwości:

  • Każdy węzeł w b-drzewie może mieć maksimum M dzieci
  • W przypadku minimalnej liczby dzieci węzeł liścia ma 0 dzieci, węzeł główny ma co najmniej 2 dzieci, a węzeł wewnętrzny ma minimalny pułap m/2 dzieci. Na przykład wartość m wynosi 5, co oznacza, że ​​węzeł może mieć 5 dzieci, a węzły wewnętrzne mogą mieć maksymalnie 3 dzieci.
  • Każdy węzeł ma maksymalną liczbę (m-1) kluczy.

Węzeł główny musi zawierać co najmniej 1 klucz, a wszystkie pozostałe węzły muszą zawierać co najmniej sufit m/2 minus 1 Klucze.