Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.
You may assume k is always valid, 1 ≤ k ≤ BST's total elements.
Input: root = [3,1,4,null,2], k = 1
3 / \ 1 4 \ 2
Input: root = [5,3,6,2,4,null,null,1], k = 3
5 / \ 3 6 / \ 2 4 / 1
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?
Solution: Please check the main.js snippet for the solution. If you have different approach in mind or have any suggestion for this implementation feel free to share in the comment below. Thanks!