@perugi/binary-search-tree

1.0.0 • Public • Published

Binary Search Tree

A practice implementation of a Binary Search Tree in JavaScript as an ES6 Class, based on the specifications at: https://www.theodinproject.com/lessons/javascript-binary-search-trees.

Usage

const bst = new BinarySearchTree();
bst.buildTree([1, 7, 4, 24, 8, 7]);
console.log(bst.inOrder()); // [ 1, 4, 7, 8, 24]

Methods

The following public class methods are implemented:

  • buildTree(array) takes an array of data (e.g., [1, 7, 4, 24, 8, 7]) and turns it into a balanced binary tree of Node objects.
  • prettyPrint(node) prints the tree, with the rootat the specified nod, in the console. If no node is passed, it prints the complete tree.
  • insert(value) inserts the given value into a proper position in the tree (warning, the tree can become unbalanced as a result).
  • delete(value) delete the given value from the tree (warning, the tree can become unbalanced as a result).
  • find(value) return the node with the given value.
  • levelOrder(callback) traverses the tree in breadth-first level order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in level order.
  • inOrder(callback) traverses the tree in depth-first in-order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in in-order.
  • preOrder(callback) traverses the tree in depth-first pre-order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in pre-order.
  • postOrder(callback) traverses the tree in depth-first post-order and provides each node as an argument to the callback. If no callback is given, the method return an array of values in post-order.
  • height(node) returns the given node's height, defined as the number of edges in the longest path from a given node to a leaf node.
  • depth(node) return the given node's depth, defined as the number of edges in the path from a given node to the tree's root node.
  • isBalanced() returns true if the tree is balanced.
  • rebalance() rebalances an unbalanced tree.

Readme

Keywords

none

Package Sidebar

Install

npm i @perugi/binary-search-tree

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

13 kB

Total Files

7

Last publish

Collaborators

  • perugi