Hier ist die Quelle meiner Frage.
Codieren Sie bei einem selbstausgleichenden Baum (AVL) eine Methode, die den Median zurückgibt.
(Median: Der numerische Wert, der die obere Hälfte einer Datenprobe von der unteren Hälfte trennt. Beispiel: Wenn die Reihe ist
2, 7, 4, 9, 1, 5, 8, 3, 6
dann ist der Median 5.)
Ich kann folgende Lösung anbieten:
- Durchlaufen Sie den angegebenen Baum und geben Sie die Anzahl der Elemente zurück.
- Durchqueren Sie den Baum
n / 2 + 1
(fallsn
ungerade) und führen Sie erneut einen Baumspaziergang in der richtigen Reihenfolge durch. Der Wert desn / 2 + 1
th-Elements ist der Median.
Aber ich kann es mit einem binären Suchbaum machen, oder? Gibt es einen besseren Algorithmus für eine AVL?