任意のサイズと範囲の2つのバイナリ検索ツリーをマージするアルゴリズムを探しています。これを実装するための明確な方法は、範囲が他のツリーの任意の外部ノードに収まるサブツリー全体を見つけることです。しかし、このタイプのアルゴリズムのための時間を実行している最悪の場合は、の順になるようだと、それぞれの木の大きさです。O(n+m)
n
m
ただし、これはで行うことができると言われていますO(h)
。ここh
で、高さの大きいツリーの高さです。そして、私はこれがどのように可能かについて完全に迷っています。最初に木を回転させて実験してみましたが、木を背骨に回転させることはすでにO(h)です。
O(log n)
ですか、単純なノード移動機能を使用してバイナリツリーのマージを簡単に行うことはできませんか?
n
。これらのツリーの高さが実際にであることがわかります。完全または完全な二分木のみが、ノードの総数に対する高さの対数を持ちます。