File tree 2 files changed +43
-0
lines changed
src/_DataStructures_/Trees/BST
2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,9 @@ function inOrderTraversal(root) {
13
13
14
14
function findKthMax ( rootNode , k ) {
15
15
const arr = inOrderTraversal ( rootNode ) ;
16
+ if ( k < 0 || k > arr . lenth ) {
17
+ throw new Error ( 'Invalid value for K' ) ;
18
+ }
16
19
return arr [ arr . length - k ] ;
17
20
}
18
21
Original file line number Diff line number Diff line change
1
+ // eslint-disable-next-line no-unused-vars
2
+ const BST = require ( '../index' ) ;
3
+
4
+ // Inorder traversal returns a sorted array
5
+ function inOrderTraversal ( root ) {
6
+ if ( root === null ) return [ ] ;
7
+ let arr = [ ] ;
8
+ // traverse left
9
+ const left = inOrderTraversal ( root . leftChild ) ;
10
+ arr = [ ...left , root . value ] ;
11
+ const right = inOrderTraversal ( root . rightChild ) ;
12
+ return [ ...arr , ...right ] ;
13
+ }
14
+
15
+ function findKthMin ( rootNode , k ) {
16
+ const arr = inOrderTraversal ( rootNode ) ;
17
+ if ( k < 0 || k > arr . lenth ) {
18
+ throw new Error ( 'Invalid value for K' ) ;
19
+ }
20
+ return arr [ k - 1 ] ;
21
+ }
22
+
23
+ // // create a BST
24
+ // const myBST = new BST(6);
25
+
26
+ // myBST.add(2);
27
+ // myBST.add(19);
28
+ // myBST.add(14);
29
+ // myBST.add(8);
30
+ // myBST.add(5);
31
+ // myBST.add(12);
32
+ // myBST.add(33);
33
+ // myBST.add(52);
34
+ // myBST.add(1);
35
+ // myBST.add(0);
36
+
37
+ // // find 3rd max
38
+ // console.log(findKthMin(myBST.root, 3));
39
+
40
+ module . exports = findKthMin ;
You can’t perform that action at this time.
0 commit comments