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

@myinan/binary-search-tree

v1.0.0

Published

My custom made binary-search-tree module.

Downloads

3

Readme

Balanced BST

A balanced binary search tree implementation with Vanilla Javascript.

  • Create a new Binary Search Tree instance with the new Tree(arr) call. arr is an array provided by the user which might have duplicate items and don't have to be sorted. Cleaning and sorting the data is handled by the Tree class.

  • insertNode(key) instance method insert a new node into the BST, which has the "key" provided by user as it's key property.

  • deleteNode(key) instance method removes the node with the given key from the BST.

  • find(value) method accepts a value and returns the node with the given value, if it exists. Otherwise returns an an appropriate error.

  • levelOrder, inOrder, preOrder, and postOrder methods accept an optional callback function as its parameter. levelOrder traverses the tree in breadth-first level order and provides a level ordered array of nodes. Each of inOrder, preOrder, and postOrder functions traverse the tree in their respective depth-first order and provide an ordered array of nodes. The functions returns an array of values if no callback is given as an argument.

  • getNodeHeight(key) method accepts a node and returns its height. Height is defined as the number of edges in the longest path from a given node to a leaf node.

  • getNodeDepth(key) method accepts a node and returns its depth. Depth is defined as the number of edges in the path from a given node to the tree’s root node.

  • isBalanced() method checks if the tree is balanced. A balanced tree is one where the difference between heights of the left subtree and the right subtree of every node is not more than 1.

  • rebalance() method rebalances an unbalanced tree.

  • Also, the prettyPrint(node) utility function can be used to log the BST to the console in a more pleasant way. The node parameter should be the root of the Tree class instance.