2 つの最大ヒープをマージする最も効率的なアルゴリズムを見つける必要があります。
いくつかの重要な事実: ヒープはバイナリ ツリーとして表されます。つまり、各ノードには 3 つのフィールド (値 (キー)、右の子へのポインター、左の子へのポインター) があります。
私の考え: 2 番目のヒープの最後の葉を取り、それを新しいヒープのルートとして配置します。したがって、左側の子が正当な最大ヒープであり、右側の子が正当な最大ヒープである場合、新しいヒープを取得します。(私の意見では) 問題は、ルートが最大要素ではないという事実だけです。そのため、ルートから関数Max-Heapifyを実行でき、問題を解決できると思います。
最悪の場合の総実行時間 - O(logn) - リーフをルートとして作成するのはO(1)であり、Max-HeapifyはO(logn)であるためです。
あなたはそれについてどう思いますか?私は正しいですか?2つの最大ヒープをマージするためのより効率的なアルゴリズムはありますか? (表現が二分木であることを考慮してください)