Próbuję udowodnić, że sterty binarne z węzłami mają dokładnie liści, biorąc pod uwagę, że stertę buduje się w następujący sposób:
Każdy nowy węzeł jest wstawiany przez przeskalowanie w górę . Oznacza to, że każdy nowy węzeł musi zostać utworzony przy następnym dostępnym podrzędnym. Rozumiem przez to, że dzieci są napełnione niżej i od lewej do prawej. Na przykład następująca sterta:
0
/ \
1 2
będzie mieć zostały zbudowane w tej kolejności: 0, 1, 2. (Liczby są tylko indeksy, dają żadnych wskazówek rzeczywistych danych przechowywanych w tym węźle).
Ma to dwie ważne implikacje:
Nie może istnieć węzeł na poziomie bez poziomu k całkowicie wypełnionego
Ponieważ dzieci są budowane od lewej do prawej, między węzłami na poziomie nie może być „pustych przestrzeni” ani takich sytuacji:
0 / \ 1 2 / \ \ 3 4 6
(Z mojej definicji byłby to nielegalny stos). Zatem dobrym sposobem na myślenie o tym stosie jest implementacja tablicy w stosie, w której nie może być żadnych „skoków” w niezdecydowaniu tablicy.
Pomyślałem więc, że indukcja byłaby prawdopodobnie dobrym sposobem na zrobienie tego ... Być może coś, co dotyczy nawet dziwnych przypadków dla n. Na przykład niektóre indukcje wykorzystujące fakt, że nawet hałdy zbudowane w ten sposób muszą mieć wewnętrzny węzeł z jednym dzieckiem dla parzystego n, a nie takie węzły dla nieparzystego n. Pomysły?
źródło
Odpowiedzi:
Jeśli poprawnie otrzymam twoje pytanie, otrzymana sterta jest po prostu uporządkowanym drzewem binarnym, gdzie w porządku oznacza, że poziom można zająć dopiero po całkowitym wypełnieniu poziomu k - 1 , a każdy poziom zajmuje od lewej w prawo, bez pomijania.k k−1
Potem dowód idzie w ten sposób.
źródło
Oto prostszy logiczny dowód.
źródło