Pobieranie wysokości
Lekcja 5 z 16 w kursie Drzewo AVL – struktury danych, seria #10 w Coddy.
Dodaj metodę getHeight do AVLTree, która odczytuje zapisaną wysokość węzła. Jedyny haczyk dotyczy przypadku null: puste poddrzewo nie istnieje, więc zgodnie z konwencją jego wysokość wynosi 0, czyli o jeden mniej niż wysokość rzeczywistego liścia, która wynosi 1.
Kierowanie wszystkich odczytów wysokości przez tę jedną metodę (zamiast bezpośredniego odczytywania node.height wszędzie) oznacza, że sprawdzenie wartości null trzeba zapisać tylko raz.
Wyzwanie
PoczątkującyNapisz metodę getHeight(node) w klasie AVLTree, która zwraca 0, jeśli node ma wartość null, a w przeciwnym razie zwraca node.height.
Spróbuj swoich sił
#include <stdio.h>
#include <string.h>
#include "avltree.h"
int main(void) {
AVLTree* tree = AVLTree_create();
char line[256];
while (fgets(line, sizeof(line), stdin) != NULL) {
line[strcspn(line, "\r\n")] = '\0';
if (strcmp(line, "null") == 0) {
printf("%d\n", AVLTree_getHeight(tree, NULL));
}
if (strcmp(line, "null") != 0) {
int h;
sscanf(line, "%d", &h);
Node* n = Node_create(0);
n->height = h;
printf("%d\n", AVLTree_getHeight(tree, n));
}
}
return 0;
}
Wszystkie lekcje w sekcji Drzewo AVL – struktury danych, seria #10
2Projekt drzewa AVL
Klasa węzłaKlasa AVLTreePoćwicz samodzielnie: Kompilator C online