From 05184c42686e0e9d56e23706a39cc9a881a0fadc Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Thu, 10 Oct 2019 16:16:41 +0530 Subject: [PATCH 1/8] update: find k-th max in BST --- .../Trees/BST/find-kth-max/index.js | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/_DataStructures_/Trees/BST/find-kth-max/index.js diff --git a/src/_DataStructures_/Trees/BST/find-kth-max/index.js b/src/_DataStructures_/Trees/BST/find-kth-max/index.js new file mode 100644 index 00000000..67f7aea2 --- /dev/null +++ b/src/_DataStructures_/Trees/BST/find-kth-max/index.js @@ -0,0 +1,35 @@ +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); + 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; From 4a751475a28607f04cd03c57b95efe71ad644e34 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Thu, 10 Oct 2019 16:17:28 +0530 Subject: [PATCH 2/8] update: entry in readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 665bc09c..bd35ee53 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct - [Trees](src/_DataStructures_/Trees) - [Binary Search Tree](src/_DataStructures_/Trees/BST) + - [Find kth maximin in a BST](src/_DataStructures_/Trees/BST/find-kth-max) - [Suffix Tree](src/_DataStructures_/SuffixTree) ### Logical Problems From f3761352bd4dadaad45302391083ca5b8aa60579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B1=E2=88=82?= Date: Thu, 10 Oct 2019 16:24:35 +0530 Subject: [PATCH 3/8] fix: closing of `` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8389dab..d0120523 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct - [Trees](src/_DataStructures_/Trees) - [Binary Search Tree](src/_DataStructures_/Trees/BST) - - [Find kth maximin in a BST](src/_DataStructures_/Trees/BST/find-kth-max) + - [Find kth maximin in a BST](src/_DataStructures_/Trees/BST/find-kth-max) - [Suffix Tree](src/_DataStructures_/SuffixTree) ### Logical Problems From 0ff8d471dbb0a02dc0f857775929a930a09a49cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B1=E2=88=82?= Date: Thu, 10 Oct 2019 16:31:29 +0530 Subject: [PATCH 4/8] fix: typo error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d0120523..0bdad6f2 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct - [Trees](src/_DataStructures_/Trees) - [Binary Search Tree](src/_DataStructures_/Trees/BST) - - [Find kth maximin in a BST](src/_DataStructures_/Trees/BST/find-kth-max) + - [Find kth maximum in a BST](src/_DataStructures_/Trees/BST/find-kth-max) - [Suffix Tree](src/_DataStructures_/SuffixTree) ### Logical Problems From 0bf9860d52a0883ac7782bdda28ac31083862a4f Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Thu, 10 Oct 2019 16:36:06 +0530 Subject: [PATCH 5/8] update: find kth min & throw error for invalid K --- .../Trees/BST/find-kth-max/index.js | 3 ++ .../Trees/BST/find-kth-minimum/index.js | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/_DataStructures_/Trees/BST/find-kth-minimum/index.js diff --git a/src/_DataStructures_/Trees/BST/find-kth-max/index.js b/src/_DataStructures_/Trees/BST/find-kth-max/index.js index 67f7aea2..fd798fcd 100644 --- a/src/_DataStructures_/Trees/BST/find-kth-max/index.js +++ b/src/_DataStructures_/Trees/BST/find-kth-max/index.js @@ -13,6 +13,9 @@ function inOrderTraversal(root) { 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]; } diff --git a/src/_DataStructures_/Trees/BST/find-kth-minimum/index.js b/src/_DataStructures_/Trees/BST/find-kth-minimum/index.js new file mode 100644 index 00000000..a28115ad --- /dev/null +++ b/src/_DataStructures_/Trees/BST/find-kth-minimum/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; From ca93db32f78a85c295fa95c405cdac516cd79a85 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Thu, 10 Oct 2019 16:37:26 +0530 Subject: [PATCH 6/8] update: entry in README & folder rename --- README.md | 1 + .../Trees/BST/{find-kth-minimum => find-kth-min}/index.js | 0 2 files changed, 1 insertion(+) rename src/_DataStructures_/Trees/BST/{find-kth-minimum => find-kth-min}/index.js (100%) diff --git a/README.md b/README.md index 0bdad6f2..83f38022 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct - [Trees](src/_DataStructures_/Trees) - [Binary Search Tree](src/_DataStructures_/Trees/BST) - [Find kth maximum in a BST](src/_DataStructures_/Trees/BST/find-kth-max) + - [Find kth minimum in a BST](src/_DataStructures_/Trees/BST/find-kth-min) - [Suffix Tree](src/_DataStructures_/SuffixTree) ### Logical Problems diff --git a/src/_DataStructures_/Trees/BST/find-kth-minimum/index.js b/src/_DataStructures_/Trees/BST/find-kth-min/index.js similarity index 100% rename from src/_DataStructures_/Trees/BST/find-kth-minimum/index.js rename to src/_DataStructures_/Trees/BST/find-kth-min/index.js From b4507f155a1ac9effe467d2b4eb9a389363ec6ee Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Thu, 10 Oct 2019 16:46:06 +0530 Subject: [PATCH 7/8] update: rename folder and fix condition for K --- src/_DataStructures_/Trees/{BST => BinarySearchTree}/Node.js | 0 .../Trees/{BST => BinarySearchTree}/find-kth-max/index.js | 2 +- .../Trees/{BST => BinarySearchTree}/find-kth-min/index.js | 2 +- src/_DataStructures_/Trees/{BST => BinarySearchTree}/index.js | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename src/_DataStructures_/Trees/{BST => BinarySearchTree}/Node.js (100%) rename src/_DataStructures_/Trees/{BST => BinarySearchTree}/find-kth-max/index.js (96%) rename src/_DataStructures_/Trees/{BST => BinarySearchTree}/find-kth-min/index.js (96%) rename src/_DataStructures_/Trees/{BST => BinarySearchTree}/index.js (100%) 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/BST/find-kth-max/index.js b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-max/index.js similarity index 96% rename from src/_DataStructures_/Trees/BST/find-kth-max/index.js rename to src/_DataStructures_/Trees/BinarySearchTree/find-kth-max/index.js index fd798fcd..fb306ca1 100644 --- a/src/_DataStructures_/Trees/BST/find-kth-max/index.js +++ b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-max/index.js @@ -13,7 +13,7 @@ function inOrderTraversal(root) { function findKthMax(rootNode, k) { const arr = inOrderTraversal(rootNode); - if (k < 0 || k > arr.lenth) { + if (k <= 0 || k > arr.lenth) { throw new Error('Invalid value for K'); } return arr[arr.length - k]; diff --git a/src/_DataStructures_/Trees/BST/find-kth-min/index.js b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-min/index.js similarity index 96% rename from src/_DataStructures_/Trees/BST/find-kth-min/index.js rename to src/_DataStructures_/Trees/BinarySearchTree/find-kth-min/index.js index a28115ad..e62468fc 100644 --- a/src/_DataStructures_/Trees/BST/find-kth-min/index.js +++ b/src/_DataStructures_/Trees/BinarySearchTree/find-kth-min/index.js @@ -14,7 +14,7 @@ function inOrderTraversal(root) { function findKthMin(rootNode, k) { const arr = inOrderTraversal(rootNode); - if (k < 0 || k > arr.lenth) { + if (k <= 0 || k > arr.lenth) { throw new Error('Invalid value for K'); } return arr[k - 1]; 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 From ab8b0389a4e6448aa266a4d20a10ae79057aaa01 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Thu, 10 Oct 2019 16:46:36 +0530 Subject: [PATCH 8/8] update: fix entries in readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 83f38022..545981ac 100644 --- a/README.md +++ b/README.md @@ -37,9 +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) - - [Find kth maximum in a BST](src/_DataStructures_/Trees/BST/find-kth-max) - - [Find kth minimum in a BST](src/_DataStructures_/Trees/BST/find-kth-min) + - [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