Ich suche nach einem Algorithmus, um zwei binäre Suchbäume beliebiger Größe und Reichweite zusammenzuführen. Der naheliegende Weg, dies zu implementieren, wäre, ganze Teilbäume zu finden, deren Bereich in einen beliebigen externen Knoten im anderen Baum passen kann. Die Laufzeit im ungünstigsten Fall für diese Art von Algorithmus scheint jedoch in der Größenordnung von O(n+m)
wo n
und m
wie groß jeder Baum ist.
Mir wurde jedoch gesagt, dass dies in erfolgen könnte O(h)
, wo h
die Höhe des Baumes mit der größeren Höhe ist. Und ich bin völlig verfahren, wie das möglich ist. Ich habe versucht, zuerst einen der Bäume zu drehen, aber einen Baum in eine Wirbelsäule zu drehen, ist bereits O (h).
O(log n)
? Wäre es nicht einfach, binäre Bäume mit einer einfachen Funktion zum Verschieben von Knoten zusammenzuführen?
n
. Nur vollständige oder vollständige Binärbäume haben einen Höhenlogarithmus zu ihrer Gesamtzahl von Knoten.