Różnica między „kompletnym drzewem binarnym”, „ścisłym drzewem binarnym”, „pełnym drzewem binarnym”?


80

Jestem zdezorientowany co do terminologii poniższych drzew, studiowałem Drzewo i nie jestem w stanie rozróżnić tych drzew:

a) Pełne drzewo binarne

b) Ścisłe drzewo binarne

c) Pełne drzewo binarne

Proszę, pomóż mi rozróżnić te drzewa. Kiedy i gdzie te drzewa są używane w strukturze danych?


2
Czy en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees nie odpowiada na Twoje pytanie?
rodion

7
nie, nie, wiele zamieszania wśród nich
kTiwari

1
Ścisłe drzewo binarne: każdy węzeł może mieć 2 węzły potomne lub nie może mieć ich wcale
Vikkyhacks

Odpowiedzi:


73

Wikipedia ustąpiła

Pełne drzewo binarne (czasami właściwe drzewo binarne lub 2-drzewo lub ściśle binarne drzewo) to drzewo, w którym każdy węzeł inny niż liście ma dwoje dzieci.

Więc nie masz węzłów z tylko jednym dzieckiem. Wydaje się być tym samym, co ścisłe drzewo binarne.

Oto obraz pełnego / ścisłego drzewa binarnego z google:

enter image description here

Kompletne drzewo binarne to drzewo binarne, w którym każdy poziom, z wyjątkiem być może ostatniego, jest całkowicie wypełniony, a wszystkie węzły są tak daleko, jak to możliwe.

Wydaje się, że oznacza zrównoważone drzewo.

Tutaj jest obraz pełnego drzewa binarnego, z google, pełna część drzewa to bonus.

enter image description here


34
Twój przykład pełnego drzewa spełnia również kryteria bycia pełnym drzewem binarnym, więc różnica jest widocznie zamazana, moim zdaniem możesz podać przykład kompletnego drzewa, które nie jest pełnym drzewem binarnym i odwrotnie, odpowiedź zakończona :)
0decimal0

1
Istnieje różnica między pełnym drzewem binarnym a ściśle binarnym drzewem. Zobacz odpowiedź: stackoverflow.com/a/32064101/5237727
Saurabh Bhatia

2
Ponadto, chociaż wszystkie pełne drzewa są drzewami zrównoważonymi, wszystkie drzewa zrównoważone niekoniecznie są drzewami pełnymi.
sfarbota

1
Co to znaczy, że każdy poziom jest całkowicie wypełniony?
lolololol ol

2
@lololololol oznacza to, że wszystkie węzły, które mogą znajdować się na tym poziomie, są obecne.
Sam jestem mówi Przywróć Monikę

87

Idealne drzewo:

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ / \ / \ / \
x x x x x x x x

Kompletne drzewo:

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ /
x x x

Ścisłe / pełne drzewo:

       x
     /   \
    /     \
   x       x
  / \ 
 x   x 
    / \
    x x 

4
Przez doskonałe drzewo binarne masz na myśli pełne drzewo binarne, do którego odnosi się OP?
RBT

3
Idealne drzewo binarne to zarówno Ścisłe / Pełne drzewo binarne, jak i Kompletne drzewo binarne, ale na odwrót może nie zawsze być prawdziwe.
neo

51

Istnieje różnica między ŚCIĄGŁYM a PEŁNYM DRZEWEM BINARNYM.

1) PEŁNE DRZEWO BINARNE: Drzewo binarne o wysokości h, które zawiera dokładnie (2 ^ h) -1 elementów, nazywane jest pełnym drzewem binarnym . (Ref: str. 427, Struktury danych, algorytmy i aplikacje w C ++ [University Press], wydanie drugie autorstwa Sartaj Sahni).

lub innymi słowy

W PEŁNYM DRZEWIE BINARNYM każdy węzeł ma dokładnie 0 lub 2 dzieci, a wszystkie węzły liści są na tym samym poziomie.

Na przykład: Poniżej przedstawiono PEŁNE DRZEWO BINARNE:

          18
       /      \   
     15       30    
    /  \     /   \   
  40    50  100  40 

2) ŚCIĘTE DRZEWO BINARNE: Każdy węzeł ma dokładnie 0 lub 2 dzieci.

Na przykład: Poniżej znajduje się ŚCIĄGLIWE DRZEWO BINARNE:

         18
       /     \   
     15       30    
    /  \          
  40    50

Myślę, że nie ma zamieszania w definicji kompletnego drzewa binarnego, ale dla kompletności postu chciałbym powiedzieć, czym jest pełne drzewo binarne.

3) KOMPLETNE DRZEWO BINARNE: Drzewo binarne jest kompletne. Drzewo binarne jest kompletne, jeśli wszystkie poziomy są całkowicie wypełnione, z wyjątkiem ostatniego poziomu, a ostatni poziom ma wszystkie klawisze tak pozostawione, jak to tylko możliwe.

Na przykład: Poniżej przedstawiono KOMPLETNE DRZEWO BINARNE:

           18
       /       \  
     15         30  
    /  \        /  \
  40    50    100   40
 /  \   /
8   7  9 

Uwaga: poniżej znajduje się również pełne drzewo binarne:

         18
       /     \   
     15       30    
    /  \     /   \   
  40    50  100  40 

Czy możesz podać źródło pełnej definicji drzewa binarnego? Jest to sprzeczne z tym na Wikipedii, który pochodzi z NIST .
Calvin Li

@CalvinLi Źródło jest wymienione w definicji PEŁNEGO DRZEWA BINARNEGO. Oto link do pliku PDF (str. 447 z pliku PDF) - o6ucs.files.wordpress.com/2012/10/...
Saurabh Bhatia

@SaurabhBhatia, ostatnia reprezentacja odnosi się również do pełnego drzewa binarnego. Popraw mnie, jeśli się mylę. Jak jedno przedstawienie może być prawdziwe dla różnych odmian?
Rose

10

Zastrzeżenie - Głównym źródłem niektórych definicji jest wikipedia, wszelkie sugestie dotyczące ulepszenia mojej odpowiedzi są mile widziane.

Chociaż ten post ma akceptowaną odpowiedź i jest dobry, nadal byłem zdezorientowany i chciałbym dodać więcej wyjaśnień dotyczących różnicy między tymi terminami.

(1) PEŁNE DRZEWO BINARNE - Pełne drzewo binarne to drzewo binarne, w którym każdy węzeł poza liśćmi ma dwoje dzieci. Nazywane jest również drzewem ściśle binarnym .

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Dwa powyższe przykłady to pełne lub ściśle binarne drzewo.

(2) KOMPLETNE DRZEWO BINARNE - Definicja pełnego drzewa binarnego jest dość niejednoznaczna i stwierdza: - Kompletne drzewo binarne to drzewo binarne, w którym każdy poziom, z wyjątkiem być może ostatniego , jest całkowicie wypełniony, a wszystkie węzły są takie same jak najbardziej w lewo. Może mieć od 1 do 2h węzłów, jak najdalej w lewo, na ostatnim poziomie h

Zwróć uwagę na linie kursywą.

Niejednoznaczność tkwi w wierszach zapisanych kursywą, „z wyjątkiem ewentualnie ostatniego”, co oznacza, że ​​ostatni poziom może być również całkowicie wypełniony, tj. Ten wyjątek nie zawsze musi być spełniony. Jeśli wyjątek nie zachowuje się, jest dokładnie taki sam, jak drugi opublikowany przeze mnie obraz, który można również nazwać doskonałym drzewem binarnym . Tak więc idealne drzewo binarne jest również pełne i kompletne, ale nie odwrotnie, co będzie jasne dzięki jeszcze jednej definicji, którą muszę stwierdzić:

PRAWIE KOMPLETNE DRZEWO BINARNE - Gdy wyjątek w definicji pełnego drzewa binarnego utrzymuje się, wtedy nazywa się prawie kompletnym drzewem binarnym lub prawie kompletnym drzewem binarnym. Jest to po prostu rodzaj kompletnego drzewa binarnego, ale potrzebna jest oddzielna definicja, aby było bardziej jednoznaczne.

Więc prawie kompletne drzewo binarne będzie wyglądać tak, możesz zobaczyć na obrazie, że węzły są jak najdalej z lewej strony, więc bardziej przypomina podzbiór pełnego drzewa binarnego, mówiąc bardziej rygorystycznie, każde prawie pełne drzewo binarne jest kompletnym binarnym drzewo, ale nie odwrotnie. :

wprowadź opis obrazu tutaj


6

Wnioskując z powyższych odpowiedzi, oto dokładna różnica między pełnymi / ściśle, kompletnymi i doskonałymi drzewami binarnymi

  1. Pełne / ściśle binarne drzewo : - Każdy węzeł oprócz węzłów liści ma dwoje dzieci

  2. Kompletne drzewo binarne : - Każdy poziom z wyjątkiem ostatniego jest całkowicie wypełniony, a wszystkie węzły są wyrównane.

  3. Idealne drzewo binarne : - Każdy węzeł oprócz węzłów liści ma dwoje dzieci i każdy poziom (także ostatni poziom) jest całkowicie wypełniony.


2

Rozważmy drzewo binarne, którego węzły są rysowane na wzór drzewa. Teraz zacznij numerować węzły od góry do dołu i od lewej do prawej. Pełne drzewo ma następujące właściwości:

Jeśli n ma dzieci, to wszystkie węzły ponumerowane mniej niż n mają dwoje dzieci.

Jeśli n ma jedno dziecko, musi to być lewe dziecko, a wszystkie węzły mniejsze niż n mają dwoje dzieci. Ponadto żaden węzeł o numerze większym niż n nie ma dzieci.

Jeśli n nie ma dzieci, to żaden węzeł o numerze większym niż n nie ma dzieci.

Pełne drzewo binarne może być używane do reprezentowania sterty. Można go łatwo przedstawić w ciągłej pamięci bez przerw (tj. Wszystkie elementy tablicy są używane z wyjątkiem miejsca, które może istnieć na końcu).


2

Pełne drzewo binarne to kompletne drzewo binarne, ale odwrócenie nie jest możliwe, a jeśli głębokość pliku binarnego wynosi n, nie. węzłów w pełnym drzewie binarnym to (2 ^ n-1). W drzewie binarnym nie jest konieczne, aby miało dwoje dzieci, ale w pełnym binarnym drzewie każdy węzeł nie ma lub dwoje dzieci.


1
Nie można dokładnie powiedzieć, że „nie ma możliwości odwrotnego” w rzeczywistości to bardzo swoją założenie jest przeciwstawił na przykład kompletnego drzewa w przyjętym odpowiedzi ... trzeba raczej powiedzieć, że może być lub może nie być możliwe
0decimal0

1
jeśli głębokość liczby binarnej jest n, nie. węzłów w pełnym drzewie binarnym to (2 ^ n-1): ale pełna definicja drzewa binarnego to drzewo, w którym każdy węzeł jest albo liściem, albo ma dwoje dzieci. Więc maksymalnie możliwe nie. dzieci to (2 ^ n-1), ale może być mniejsze.
mrida

2

Aby rozpocząć od podstaw, bardzo ważne jest zrozumienie samego drzewa binarnego, aby zrozumieć jego różne typy.

Drzewo jest drzewem binarnym wtedy i tylko wtedy, gdy: -

- Ma węzeł główny, który może nie mieć żadnych węzłów podrzędnych (0 węzłów potomnych, drzewo NULL)

–Węzeł główny może mieć 1 lub 2 węzły potomne. Każdy taki węzeł sam tworzy drzewo abinarne 

–Liczba węzłów potomnych może wynosić 0, 1, 2 ....... nie więcej niż 2

–Istnieje niepowtarzalna ścieżka od katalogu głównego do każdego innego węzła

Przykład:

        X
      /    \
     X      X
          /   \
         X     X

Przechodząc do zapytanych terminologii:

Drzewo binarne jest kompletnym drzewem binarnym (o wysokości h, przyjmujemy węzeł główny jako 0) wtedy i tylko wtedy, gdy: -

Poziomy od 0 do h-1 reprezentują pełne drzewo binarne o wysokości h-1

- Jeden lub więcej węzłów na poziomie h-1 może mieć 0 lub 1 węzłów podrzędnych

Jeśli j, k są węzłami na poziomie h-1, to j ma więcej węzłów potomnych niż k wtedy i tylko wtedy, gdy j znajduje się na lewo od k, tj. Na ostatnim poziomie (h) może brakować węzłów liści, jednak te obecne muszą przesunąć w lewo

Przykład:

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 

Drzewo binarne jest drzewem ściśle binarnym wtedy i tylko wtedy, gdy: -

Każdy węzeł ma dokładnie dwa węzły podrzędne lub nie ma żadnych węzłów

Przykład:

         X
       /   \
      X     X 
          /   \
         X      X
        / \    / \ 
       X   X  X   X 

Drzewo binarne jest pełnym drzewem binarnym wtedy i tylko wtedy, gdy: -

Każdy węzeł inny niż liść ma dokładnie dwa węzły potomne

Wszystkie węzły liści są na tym samym poziomie

Przykład:

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

Powinieneś także wiedzieć, czym jest idealne drzewo binarne?

Drzewo binarne jest doskonałym drzewem binarnym wtedy i tylko wtedy, gdy: -

- to pełne drzewo binarne

- Wszystkie węzły liści są na tym samym poziomie

Przykład:

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

Cóż, przykro mi, że nie mogę publikować zdjęć, ponieważ nie mam 10 punktów reputacji. Mam nadzieję, że to pomoże Tobie i innym!


2

W moim ograniczonym doświadczeniu z drzewem binarnym myślę:

  1. Drzewo ściśle binarne : każdy węzeł z wyjątkiem węzłów liści ma dwoje dzieci lub tylko węzeł główny.
  2. Pełne drzewo binarne : drzewo binarne H ściśle (lub dokładnie) zawierające 2 ^ (H + 1) -1 węzłów , jasne jest, że na każdym poziomie jest najwięcej węzłów. Lub w skrócie ścisłe drzewo binarne, w którym wszystkie węzły liści są na tym samym poziomie.
  3. Kompletne drzewo binarne : Jest to drzewo binarne, w którym każdy poziom, z wyjątkiem ostatniego, jest całkowicie wypełniony, a wszystkie węzły są tak daleko, jak to możliwe.

1
Twoja definicja pełnego drzewa binarnego jest niepoprawna, to znaczy definicja idealnego drzewa binarnego. Pełne drzewo binarne jest synonimem drzewa ściśle binarnego. (źródło: patrz drzewo ściśle binarne: faculty.cs.niu.edu/~mcmahon/CS241/Notes/bintree.html ) (źródło: patrz idealne drzewo binarne: slideshare.net/ajaykumarc137151/… )
Keego

1
o mój Boże, jestem teraz zdezorientowany, upewnię się o tym. Wielkie dzięki.
BertKing

1
Żaden problem :) Zobacz odpowiedź @Lotus poniżej , on ją załatwił . Po prostu zaleciłem zmiany w Twojej odpowiedzi, aby to odzwierciedlić.
Keego

1

Rozważmy drzewo binarne o wysokości „h”. Drzewo binarne nazywane jest kompletnym drzewem binarnym, jeśli wszystkie liście znajdują się na wysokości „h” lub „h-1” bez żadnych brakujących liczb w sekwencji.

                   1
                 /   \
              2       3
            /    \         
         4        5

To jest kompletne drzewo binarne.

                   1
                 /   \
              2       3
            /        /    
         4         6    

Nie jest to pełne drzewo binarne, ponieważ w sekwencji brakuje węzła o numerze 5


0

pełne drzewo binarne jest pełne, jeśli każdy węzeł ma 0 lub 2 dzieci. w pełnej binarnej liczbie węzłów liści to liczba węzłów wewnętrznych plus 1 L = l + 1


0

Kompletne drzewo binarne: Wszystkie poziomy są całkowicie wypełnione, z wyjątkiem najniższego poziomu i jednej głównej rzeczy, wszystkie elementy liści muszą opuścić dziecko. Ścisłe drzewo binarne: W tym drzewie każdy węzeł nie będący liściem nie ma potomka, tj. Ani lewy, ani prawy. Pełne drzewo binarne: każdy węzeł ma zerowe dziecko lub dwoje dzieci (nigdy nie ma jednego dziecka).


> W tym drzewie każdy węzeł nie-liścia nie ma potomka, tj. Ani lewy, ani prawy węzeł nie-liścia nie musi mieć co najmniej jednego
potomka,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.