Für jeden Knoten in einem ausgeglichenen Binärbaum beträgt der maximale Höhenunterschied zwischen dem linken untergeordneten Teilbaum und dem rechten untergeordneten Teilbaum höchstens 1.
Die Höhe eines Binärbaums ist der Abstand vom Wurzelknoten zum untergeordneten Knoten, der am weitesten von der Wurzel entfernt ist.
Unten ist ein Beispiel:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Höhe des Binärbaums: 4
Die folgenden sind Binärbäume und ein Bericht darüber, ob sie ausgeglichen sind oder nicht:
Der Baum darüber ist unausgeglichen .
Der obige Baum ist ausgeglichen .
Schreiben Sie das kürzestmögliche Programm, das die Wurzel eines Binärbaums als Eingabe akzeptiert und einen falschen Wert zurückgibt, wenn der Baum unausgeglichen ist, und einen wahren Wert, wenn der Baum ausgeglichen ist.
Eingang
Die Wurzel eines binären Baumes. Dies kann in Form eines Verweises auf das Stammobjekt oder sogar einer Liste erfolgen, die eine gültige Darstellung eines Binärbaums darstellt.
Ausgabe
Gibt den Wahrheitswert zurück: Wenn der Baum ausgeglichen ist
Gibt einen falschen Wert zurück: Wenn der Baum nicht ausgeglichen ist.
Definition eines binären Baumes
Ein Baum ist ein Objekt, das einen Wert und entweder zwei andere Bäume oder Zeiger darauf enthält.
Die Struktur des Binärbaums sieht ungefähr so aus:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
Wenn Sie eine Listendarstellung für einen Binärbaum verwenden, sieht diese möglicherweise folgendermaßen aus:
[root_value, left_node, right_node]
4
, ist der verbleibende Baum ausgeglichen?