-
Notifications
You must be signed in to change notification settings - Fork 270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Problem: kth max & min in BST #62
Changes from 8 commits
05184c4
4a75147
93af26e
f376135
0ff8d47
0bf9860
4980e96
ca93db3
b4507f1
ab8b038
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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]; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Check if k > arr.length then throw error. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done 🎉 |
||
} | ||
|
||
// // 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; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if k = 0 |
||
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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if k = 0
then return is undefined becuase arr[arr.length - 0 ]