Найдите K-е наибольшее число в заданном двоичном дереве
Для заданного двоичного дерева, состоящего из 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)