Jakie są typy drzew w strukturach danych?


Najlepsza odpowiedź

Istnieją różne typy drzewiastych struktur danych. Niektóre z nich to

  1. Drzewo binarne : jest to najbardziej podstawowy element struktury drzewa. Gdzie każdy węzeł może mieć maksymalnie dwoje dzieci. idealne drzewo binarne to drzewo binarne, w którym wszystkie węzły wewnętrzne mają dwoje dzieci i wszystko liście mają tę samą głębokość lub ten sam poziom. pełne drzewo binarne (czasami określane jako właściwe [15] lub płaskie drzewo binarne) to drzewo, w którym każdy węzeł w drzewie ma 0 lub 2 dzieci. W zakończono drzewo binarne każdy poziom, z wyjątkiem ostatniego, jest całkowicie zapełniony, a wszystkie węzły na ostatnim poziomie znajdują się jak najdalej na lewo. W nieskończonym ukończeniu drzewo binarne, każdy węzeł ma dwoje dzieci.
  2. Drzewo wyszukiwania binarnego: BST to drzewo binarne z określonymi właściwościami takie jak, a lewe dziecko danego węzła zawiera wartość mniejszą niż równa danemu węzłowi, a prawe dziecko zawiera węzeł większy niż podany węzeł.
  3. Drzewo AVL lub drzewo binarne o zrównoważonej wysokości : Jest to odmiana drzewa binarnego, w której różnica wysokości między lewym i prawym poddrzewem może wynosić maksymalnie 1. Jeśli w dowolnym momencie różnią się o więcej niż jedno, następuje ponowne zrównoważenie przywrócić tę właściwość. Wszystkie operacje wyszukiwania, wstawiania i usuwania zajmują O (log n) czasu zarówno w przeciętnym, jak i najgorszym przypadku, gdzie n to liczba węzłów w drzewie przed operacją.
  4. Czerwono-czarne drzewo : Kolejna odmiana drzewa binarnego podobna do drzewa AVL jest to samo równoważące się drzewo binarne wyszukiwania. Węzły tego drzewa są albo w kolorze czerwonym, albo czarnym.
  5. Drzewo splay: Drzewo splay to samodopasowujące się drzewo wyszukiwania binarnego z dodatkowa właściwość, która umożliwia szybki dostęp do ostatnio otwieranych elementów. Wszystkie normalne operacje na drzewie wyszukiwania binarnego są połączone z jedną podstawową operacją zwaną splaying. Rozłożenie drzewa na określony element zmienia układ drzewa, tak aby element był umieszczony w korzeniu drzewa.
  6. Drzewo N-ary: W tym drzewie ograniczenie drzewa binarnego zostało usunięte. Tutaj węzeł może mieć najwyżej n dzieci. Podobnie jak drzewo binarne, może to być pełne, kompletne lub doskonałe drzewo n-arowe. N-ary jest czasem znany jako las.
  7. Trie Structure : W informatyce trie, zwane także cyfrowym drzewem, a czasem radix drzewo lub drzewo prefiksów (ponieważ można je wyszukiwać według przedrostków) to uporządkowana struktura danych drzewa, która jest używana do przechowywania zestawu dynamicznego lub tablicy asocjacyjnej, w której klucze są zwykle ciągami. Wszyscy potomkowie węzła mają wspólny prefiks ciągu powiązanego z tym węzłem, a korzeń jest powiązany z pustym ciągiem.
  8. Drzewo sufiksów : Trie i drzewo sufiksów są ze sobą ściśle powiązane. drzewo sufiksów (nazywane również drzewem PAT lub we wcześniejszej formie drzewem pozycji) jest skompresowaną próbą zawierającą wszystkie sufiksy danego tekstu jako ich klucze i pozycje w tekście jako ich wartości. Drzewa sufiksowe pozwalają na szczególnie szybką implementację wielu ważnych operacji na łańcuchach.
  9. Drzewo Huffmana: Drzewo Huffmana to drzewo binarne posortowane według częstotliwości, szeroko stosowane w kompresji dane. Drzewo Huffmana jest tak skonstruowane, aby przydzielać krótkie słowo kodowe do długiego tekstu na podstawie jego częstotliwości występowania.
  10. Struktura sterty [Edytuj zgodnie z sugestią ]: Struktura sterty to kolejna szeroko stosowana struktura drzewa z określoną właściwością porządkowania. Istnieją dwa rodzaje sterty – sterta minimalna i sterta maksymalna. W stosie minimalnym rodzic węzła musi być mniejszy niż wartości wszystkich jego dzieci. Podobnie w max heap rodzic zawsze ma większą wartość w porównaniu do wszystkich swoich dzieci. Jedną z powszechnych implementacji sterty jest sterta binarna, w której każdy rodzic może mieć co najwyżej dwoje dzieci.

Inna popularna struktura drzewa obejmuje, ale nie wyczerpująco, B -Drzewo, B + – drzewo, R-Drzewo, Drzewo liczone-B, Drzewo KD (lub K-wymiarowe BST), Drzewo decyzyjne (a wariant drzewa n-ary), drzewo Markela, drzewo Fenwicka (lub drzewo indeksu binarnego), Drzewo zakresów.

Odpowiedź

  • Szablon jako kod poprzez utworzenie drzewa zależności.

Teraz poczekaj ze mną przez 5 minut, aby szczegółowo wyjaśnić, jak wykorzystaliśmy drzewo jako strukturę danych do rozwiązania naszego złożonego przypadku użycia.

Aby wyjaśnić scenariusz, weźmy mały przykład pobierania danych z interfejsu API poprzez uwierzytelnianie oparte na tokenach.

Więc jeśli chcesz osiągnąć ten wyczyn,

  • najpierw uzyskujesz nazwę użytkownika, hasło i informacje o dzierżawie i wywołujesz interfejs API w celu pobrania tokenu.
  • Następnie za pomocą pobranego tokenu wywołaj aktywny interfejs API, przekazując go w nagłówkach żądania.

To bardzo prosty scenariusz, ale sprawy stają się dość złożone, gdy trzeba wykonać łańcuch 10 interfejsów API, z których każde jest zależne od siebie.

W tym miejscu wymyśliliśmy podejście oparte na drzewie zależności.

Najpierw musimy utworzyć szablon taki jak ten

Teraz tworzymy drzewo zależności takie jak to

Wszystko zdefiniowane jako $ {} oznaczało, że jest zależne od danych wyjściowych innych zmiennych.

ResourceOps oznacza API do wykonania

W ten sposób tworzone jest drzewo zależności

  • Oceniamy parametry, które są niezależne i dołącz je do katalogu głównego.
  • Następnie przechodzimy do operacji na zasobach i rozumiemy, że zależy to od wartości dołączonych do węzła głównego. Odłączamy je więc od katalogu głównego, a następnie podłączamy do nowego węzła.
  • To samo zostanie zrobione ze wszystkimi operacjami na zasobach i

Po utworzeniu drzewa zależności do węzła-liścia wykonaj go, a następnie przyjdź do rodzica z wynikiem wykonania węzła-liścia, a następnie jest on rodzicem i rodzicem, dopóki nie osiągniemy węzła najwyższego.

Gdy dotrzemy do węzła najwyższego, otrzymujemy wynik i wrócimy jako odpowiedź HTTP udana.

Jeśli wystąpi jakikolwiek błąd w wykonaniu, zwracamy odpowiedź błędu w czytelny sposób.

Nie sądzę, żebym to trochę wyjaśnił, ale chcę tylko podkreślić, w jaki sposób rozwiązaliśmy rzeczywisty problem z drzewiastą strukturą danych dla dynamicznych akcji wykonywanych bez pisania kodu przez programistę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *