Category Archives: Algorithms

Kth smallest/minimum element in a BST – Rank of a BST node

Given a binary search tree. Find the kth smallest element in the BST. A quick solution would be to perform a modified inorder traversal with an extra parameter k. Each time inorder traversal is popping a node out of recursion/call stack (i.e. unwinding a recursion)then we keep decreasing the k. When k=0 then the current […]

Kth smallest/largest element in an array

Given an array of integer. Find the kth smallest element in the array in a most efficient manner. For example: A = [2, 1, 0, 3, -1, 3] and k=3 then the 3rd smallest element is 1. This is also (6-3) = 3rd largest element. A trivial solution is to sort the array. But question […]

Kth Smallest Element and median of Two Sorted Arrays

Given two sorted arrays find the element which would be kth in their merged and sorted combination. For example, A=[1, 1, 2, 3, 10, 15] and B=[-1, 2, 3, 4, 6, 7] then k=8th smallest element would be 4 as it appears in 8th position of the merged sorted array=[-1, 1, 1, 2, 2, 3, […]

K-th permutation sequence

Given n and k, return the k-th permutation sequence of permutations of numbers {1,2,..,n}. Note: Given n will be between 1 and 9 inclusive. By listing and labeling all of the permutations in order, we get the following sequence (ie, for n = 3): “123” “132” “213” “231” “312” “321” Then, k=5th permutation sequence will […]

K closest points

Given an array containing N points find the K closest points to the origin in the 2D plane. You can assume K is much smaller than N and N is very large. Notice the key requirement here: “K is much smaller than N. N is very large”. Definitely the brute-force solution by finding distance of […]

Inorder traversal using constant space – Morris Traversal

Usual approach using linear space (stack) We can easily do the traversal by using a stack where we keep pushing left. If no left is there then we pop an element to print it and then push its right. This is O(n) time and O(n) space algorithm.   public static void InorderTraversal(BTNode root){ Stack<BTNode> stack […]