diff --git a/README.md b/README.md
index c1a3374a..545981ac 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,9 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct
- [Doubly Linked List](src/_DataStructures_/DoublyLinkedList)
- [Trees](src/_DataStructures_/Trees)
- - [Binary Search Tree](src/_DataStructures_/Trees/BST)
+ - [Binary Search Tree](src/_DataStructures_/Trees/BinarySearchTree)
+ - [Find kth maximum in a BinarySearchTree](src/_DataStructures_/Trees/BinarySearchTree/find-kth-max)
+ - [Find kth minimum in a BinarySearchTree](src/_DataStructures_/Trees/BinarySearchTree/find-kth-min)
- [Suffix Tree](src/_DataStructures_/SuffixTree)
### Logical Problems
diff --git a/src/_DataStructures_/Trees/BST/Node.js b/src/_DataStructures_/Trees/BinarySearchTree/Node.js
similarity index 100%
rename from src/_DataStructures_/Trees/BST/Node.js
rename to src/_DataStructures_/Trees/BinarySearchTree/Node.js
diff --git a/src/_DataStructures_/Trees/BinarySearchTree/find-kth-max/index.js b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-max/index.js
new file mode 100644
index 00000000..fb306ca1
--- /dev/null
+++ b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-max/index.js
@@ -0,0 +1,38 @@
+const BST = require('../index');
+
+// Inorder traversal returns a sorted array
+function inOrderTraversal(root) {
+ if (root === null) return [];
+ let arr = [];
+ // traverse left
+ const left = inOrderTraversal(root.leftChild);
+ arr = [...left, root.value];
+ const right = inOrderTraversal(root.rightChild);
+ return [...arr, ...right];
+}
+
+function findKthMax(rootNode, k) {
+ const arr = inOrderTraversal(rootNode);
+ if (k <= 0 || k > arr.lenth) {
+ throw new Error('Invalid value for K');
+ }
+ return arr[arr.length - k];
+}
+
+// // create a BST
+// const myBST = new BST(6);
+
+// myBST.add(2);
+// myBST.add(19);
+// myBST.add(14);
+// myBST.add(8);
+// myBST.add(5);
+// myBST.add(12);
+// myBST.add(33);
+// myBST.add(52);
+// myBST.add(1);
+
+// // find 3rd max
+// console.log(findKthMax(myBST.root, 3));
+
+module.exports = findKthMax;
diff --git a/src/_DataStructures_/Trees/BinarySearchTree/find-kth-min/index.js b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-min/index.js
new file mode 100644
index 00000000..e62468fc
--- /dev/null
+++ b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-min/index.js
@@ -0,0 +1,40 @@
+// eslint-disable-next-line no-unused-vars
+const BST = require('../index');
+
+// Inorder traversal returns a sorted array
+function inOrderTraversal(root) {
+ if (root === null) return [];
+ let arr = [];
+ // traverse left
+ const left = inOrderTraversal(root.leftChild);
+ arr = [...left, root.value];
+ const right = inOrderTraversal(root.rightChild);
+ return [...arr, ...right];
+}
+
+function findKthMin(rootNode, k) {
+ const arr = inOrderTraversal(rootNode);
+ if (k <= 0 || k > arr.lenth) {
+ throw new Error('Invalid value for K');
+ }
+ return arr[k - 1];
+}
+
+// // create a BST
+// const myBST = new BST(6);
+
+// myBST.add(2);
+// myBST.add(19);
+// myBST.add(14);
+// myBST.add(8);
+// myBST.add(5);
+// myBST.add(12);
+// myBST.add(33);
+// myBST.add(52);
+// myBST.add(1);
+// myBST.add(0);
+
+// // find 3rd max
+// console.log(findKthMin(myBST.root, 3));
+
+module.exports = findKthMin;
diff --git a/src/_DataStructures_/Trees/BST/index.js b/src/_DataStructures_/Trees/BinarySearchTree/index.js
similarity index 100%
rename from src/_DataStructures_/Trees/BST/index.js
rename to src/_DataStructures_/Trees/BinarySearchTree/index.js