230. Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest
to find the k th smallest element in it.
Example 1:
Input: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
Output: 1
Example 2:
Input: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
Output: 3
Follow up: What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?
Constraints:
- The number of elements of the BST is between
1
to10^4
. - You may assume
k
is always valid,1 ≤ k ≤ BST's total elements
.
# @lc code=start
using LeetCode
function kth_smallest_in_BST(root, k::Int)::Int
isnothing(root) && return true
arr = Int[]
function pre_tra(root::TreeNode{Int})
pre_tra(root.left)
push!(arr, root.val)
pre_tra(root.right)
end
pre_tra(::Nothing) = nothing
pre_tra(root)
arr[k]
end
# @lc code=end
kth_smallest_in_BST (generic function with 1 method)
This page was generated using DemoCards.jl and Literate.jl.