K-й по величине элемент в дереве N-массива

Опубликовано: 22 Сентября, 2022

Для данного N-массивного дерева, состоящего из N узлов и целого числа K , задача состоит в том, чтобы найти K наибольший элемент в заданном N-арном дереве .

Примеры:

Input: K = 3

Output: 77 
Explanation:
The 3rd largest element in the given N-array tree is 77.

Input: K = 4

Output: 3

Подход: Данную проблему можно решить, найдя самый большой элемент в заданном диапазоне за K раз и продолжая обновлять конец диапазона до самого большого элемента, найденного до сих пор. Выполните следующие шаги, чтобы решить проблему:

  • Инициализируйте переменную, скажем, самый большойELE как INT_MIN.
  • Определите функцию, например, самый большойEleUnderRange(root, data) и выполните следующие шаги:
    • Если значение текущего корня меньше, чем данные, то обновите значение наибольшего ELe как максимум наибольшего ELe и значение текущего корня.
    • Выполните итерацию по всем дочерним элементам текущего корня и рекурсивно вызовите функциюlargeEleUnderRange(child, data) .
  • Инициализируйте переменную, скажем, как INT_MAX , чтобы сохранить K самый большой элемент.
  • Итерация по диапазону [0, K – 1] рекурсивно вызывает функцию НаибольшийEleUnderRange(root, ans) и обновляет значение ans как самый большойELe и самый большойELe как INT_MIN .
  • После выполнения вышеуказанных шагов выведите значение ans в качестве результирующего K -го максимального значения.

Ниже приведена реализация описанного выше подхода.

Временная сложность: O(N*K)
Вспомогательное пространство: O(1)