Skip to content

Latest commit

 

History

History

kth-smallest-element-in-a-bst

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Kth Smallest Element in a BST

LeetCode #: 230

Difficulty: Medium

Topics: Binary Search, Tree.

Problem

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

Note:

You may assume k is always valid, 1 ≤ k ≤ BST's total elements.

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?

Solution Explanation

Refer to the official solution here.

Complexity Analysis

Assume H to be the tree height.

Time complexity: O(H+k). This complexity is defined by the stack, which contains at least H+k elements, since before starting to pop out one has to go down to a leaf. This results in O(log N + k) for the balanced tree and O(N+k) for completely unbalanced tree with all the nodes in the left subtree.

Space complexity: O(H+k), the same as for time complexity, O(N+k) in the worst case, and O(logN+k) in the average case.