Имеется бинарное дерево поиска, где каждый узел содержит целочисленное значение. Необходимо найти k-ое наименьшее значение, которое содержится в узлах дерева. Важно учитывать, что индексация начинается с 1.
Пример 1:
Input: root = [3,1,4,null,2], k = 1
Output: 1
Объяснение: Корень дерева имеет значение 3. Левый потомок, узел со значением 1, является наименьшим значением. Его индекс 1, что соответствует k. Следовательно, ответ - 1.
Пример 2:
Input: root = [5,3,6,2,4,null,null,1], k = 3
Output: 3
Объяснение: Корень дерева имеет значение 5. Левый поддерево содержит узлы со значениями 2, 3 и 4. Так как k = 3, ответом будет 3.
Для бинарного дерева [5,3,6,2,4,null,null,1] и k = 3, список значений узлов будет иметь вид [1, 2, 3, 4, 5, 6]. Значение, соответствующее третьему индексу списка, равно 3, что и является ответом.
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
nodes = []
def inorder(node):
if node:
inorder(node.left)
nodes.append(node.val)
inorder(node.right)
inorder(root)
return nodes[k-1]