Найдите K-е наибольшее число в заданном двоичном дереве

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

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

Input: K = 3 
              1
           /    
        2        3
     /         /   
  4     5    6    7
Output: 5
Explanation: The third largest element in the given binary tree is 5.

Input: K = 1
              1
           /    
        2        3
Output: 1
Explanation: The first largest element in the given binary tree is 1.

Наивный подход: сгладьте данное двоичное дерево, а затем отсортируйте массив. Теперь выведите K-е наибольшее число из этого отсортированного массива.

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

Ниже приведена реализация вышеуказанного подхода:


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