Skip to content

praneshr/BST.JS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BST.JS

Javascript implementation of Binary Search Tree with helper methods

Install

yarn add @praneshravi/bst.js

#or

npm i @praneshravi/bst.js

Available Methods

  • insertValue
  • getRootValue
  • hasValue
  • getMinValue
  • getMaxValue
  • getDepth
  • getTree
  • traverseTree
  • getPath
  • getNode
  • getParent

Examples

  const BST = require('@praneshravi/bst.js')
  const bst = new BST()

  // constructor takes optional paramaters
  //
  // new BST(tree, valueKey, leftKey, rightKey)
  //
  // tree = existing BST (default: null)
  // valueKey = key used for value (default: 'value')
  // leftKey = key used for left edge (default: 'left')
  // rightKey = key used for right edge (default: 'right')
  //


  bst.insertValue(25)
  bst.insertValue(15)
  bst.insertValue(50)
  bst.insertValue(10)
  bst.insertValue(22)
  bst.insertValue(24)
  bst.insertValue(4)
  bst.insertValue(12)
  bst.insertValue(18)
  bst.insertValue(35)
  bst.insertValue(70)
  bst.insertValue(31)
  bst.insertValue(44)
  bst.insertValue(66)
  bst.insertValue(90)

  bst.getRootValue()
  // prints 25

  bst.hasValue(4)
  // true
  bst.hasValue(100)
  // false

  bst.getMinValue()
  // 4
  bst.getMaxValue()
  // 90

  bst.getDepth()
  // 4

  JSON.stringify(bst.getTree(), null, 4)
  // {
  //   "value": 25,
  //   "right": {
  //       "value": 50,
  //       "right": {
  //           "value": 70,
  //           "right": {
  //               "value": 90,
  //               "right": null,
  //               "left": null
  //           },
  //           "left": {
  //               "value": 66,
  //               "right": null,
  //               "left": null
  //           }
  //       },
  //       "left": {
  //           "value": 35,
  //           "right": {
  //               "value": 44,
  //               "right": null,
  //               "left": null
  //           },
  //           "left": {
  //               "value": 31,
  //               "right": null,
  //               "left": null
  //           }
  //       }
  //   },
  //   "left": {
  //       "value": 15,
  //       "right": {
  //           "value": 22,
  //           "right": {
  //               "value": 24,
  //               "right": null,
  //               "left": null
  //           },
  //           "left": {
  //               "value": 18,
  //               "right": null,
  //               "left": null
  //           }
  //       },
  //       "left": {
  //           "value": 10,
  //           "right": {
  //               "value": 12,
  //               "right": null,
  //               "left": null
  //           },
  //           "left": {
  //               "value": 4,
  //               "right": null,
  //               "left": null
  //           }
  //       }
  //   }
  // }

  bst.traverseTree('inorder')
  // [ 4, 10, 12, 15, 18, 22, 24, 25, 31, 35, 44, 50, 66, 70, 90 ]
  bst.traverseTree('preorder')
  // [ 25, 15, 10, 4, 12, 22, 18, 24, 50, 35, 31, 44, 70, 66, 90 ]
  bst.traverseTree('postorder')
  // [ 4, 12, 10, 18, 24, 22, 15, 31, 44, 35, 66, 90, 70, 50, 25 ]

  bst.getPath(90)
  // 'direction' means the direction in which the tree was traversed to reach the specified value
  // [
  //   { value: 25, direction: 'right' },
  //   { value: 50, direction: 'right' },
  //   { value: 70, direction: 'right' },
  //   { value: 90 }
  // ]

  bst.getNode(10)
  // {
  //   value: 10,
  //   right: {
  //     value: 12
  //     right: null,
  //     left: null,
  //   },
  //   left: {
  //     value: 4,
  //     right: null,
  //     left: null,
  //   }
  // }

  bst.getParent(4)
  // {
  //   value: 10,
  //   right: {
  //     value: 12
  //     right: null,
  //     left: null,
  //   },
  //   left: {
  //     value: 4,
  //     right: null,
  //     left: null,
  //   }
  // }

Development

npm install
npm run build:watch

License

MIT

About

Javascript implementation of Binary Search Tree

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published