Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/praneshr/bst.js
Javascript implementation of Binary Search Tree
https://github.com/praneshr/bst.js
binary-search-tree bst bstree data-structures javascript
Last synced: 13 days ago
JSON representation
Javascript implementation of Binary Search Tree
- Host: GitHub
- URL: https://github.com/praneshr/bst.js
- Owner: praneshr
- Created: 2018-05-21T05:39:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-05-21T12:51:59.000Z (over 6 years ago)
- Last Synced: 2024-10-11T12:06:43.743Z (27 days ago)
- Topics: binary-search-tree, bst, bstree, data-structures, javascript
- Language: JavaScript
- Size: 43.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BST.JS
Javascript implementation of Binary Search Tree with helper methods## Install
``` bash
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
``` javascript
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 25bst.hasValue(4)
// true
bst.hasValue(100)
// falsebst.getMinValue()
// 4
bst.getMaxValue()
// 90bst.getDepth()
// 4JSON.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
``` bash
npm install
npm run build:watch
```## License
MIT