npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

binarysearchtree-js

v1.0.1

Published

Javascript class to create & traverse Binary Search Trees

Downloads

7

Readme

BinarySearchTree.js

npm Travis build License

Class to create Binary Search Trees

Installation

npm install binarysearchtree-js --save

Default node structure

{
  value: 10,  // some numeric value
  left: null, // node object or null
  right: null // node object or null
}

Usage

const BinarySearchTree = require('binary-search-tree');

  // traversal order type constants
BinarySearchTree.IN_ORDER;
BinarySearchTree.PRE_ORDER;
BinarySearchTree.POST_ORDER;
BinarySearchTree.LAYER_ORDER;

const bst = new BinarySearchTree;
bst.root; 	// the root node
bst.count;  // the node count

bst.push(10);           // add a node with the value 10
bst.push(2,21,32,44);   // add multiple nodes at once
bst.push("1", [], null) // Non-numeric inputs are ignored

bst.find(10);   // returns the node with the value 10
bst.find(1);    // returns false if node does not exist

bst.min();      // returns the lowest value
bst.min(true);  // returns the node with the lowest value
bst.max();      // returns the highest value
bst.max(true);  // returns the node with the highest value

bst.traverse(BinarySearchTree._IN_ORDER);    // Traverse the tree
bst.traverse(BinarySearchTree._PRE_ORDER);   // and return an Array
bst.traverse(BinarySearchTree._POST_ORDER);  // with the node values
bst.traverse(BinarySearchTree._LAYER_ORDER); // in the given order

  // Returns a new instance of BinarySearchTree
  // from any tree data with any given structure
  // by providing the root node and its node key names
BinarySearchTree.create(
  root,       // root node
  'myData',   // value property name
  'leftNode', // left node property name
  'rightNode' // right node property name
);

  // checks if the input tree is a valid Binary Search Tree
  // node.left < node.right == true
BinarySearchTree.isBST(bst) // true
  // also possible with different node structures
BinarySearchTree.isBST(
  root,       // root node
  'myData',   // value property name
  'leftNode', // left node property name
  'rightNode' // right node property name
)