Considere un árbol binario completo donde los subárboles izquierdo y derecho de la raíz son montones máximos. El límite inferior del número de operaciones para convertir el árbol en un montón es
(A) Ω(logn)
(B) Ω(n)
(C) Ω(nlogn)
(D) Ω(n 2 )
Respuesta: (A)
Explicación: La respuesta a esta pregunta es simplemente la función max-heapify. La complejidad de tiempo de max-heapify es O (Log n) ya que recurre como máximo a través de la altura del montón.
// A recursive method to heapify a subtree with root at given index // This method assumes that the subtrees are already heapified void MinHeap::MaxHeapify(int i) { int l = left(i); int r = right(i); int largest = i; if (l < heap_size && harr[l] < harr[i]) largest = l; if (r < heap_size && harr[r] < harr[smallest]) largest = r; if (largest != i) { swap(&harr[i], &harr[largest]); MinHeapify(largest); } }
Consulte Montón binario para obtener más información.
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA