diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c88c9b..421dafa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.1.4] - 2020-04-12 +### Fixed +- jsdoc + ## [3.1.3] - 2020-04-10 ### Fixed - README diff --git a/README.md b/README.md index 7d43af9..3f22d6e 100644 --- a/README.md +++ b/README.md @@ -484,7 +484,7 @@ returns node's parent node. ### AvlTreeNode -extends BinarySearchTreeNode and add the following methods: +extends BinarySearchTreeNode and adds the following methods: #### .getHeight() the height of the node in the tree. root height is 1. diff --git a/package.json b/package.json index 9d32112..d163c2e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datastructures-js/binary-search-tree", - "version": "3.1.3", + "version": "3.1.4", "description": "binary search tree & avl tree (self balancing tree) implementation in javascript", "main": "index.js", "scripts": { diff --git a/src/avlTree.js b/src/avlTree.js index f9782c3..e22a382 100644 --- a/src/avlTree.js +++ b/src/avlTree.js @@ -1,5 +1,5 @@ /** - * datastructures-js/binary-search-tree + * @datastructures-js/binary-search-tree * @copyright 2020 Eyas Ranjous * @license MIT */ @@ -17,7 +17,7 @@ class AvlTree extends BinarySearchTree { * applies the proper rotation on nodes after an insert or remove * @param {AvlTreeNode} node */ - balanceNode(node) { + _balanceNode(node) { if (!node) return; node.updateHeight(); @@ -42,12 +42,11 @@ class AvlTree extends BinarySearchTree { /** * @public - * * inserts a node with a key/value into tree * and maintains the tree balanced by applying the necessary rotations - * * @param {number|string} key - * @param {object} vaue + * @param {object} value + * @param {AvlTreeNode} node * @return {AvlTreeNode} the inserted node */ insert(key, value, node = this._root) { @@ -82,27 +81,35 @@ class AvlTree extends BinarySearchTree { if (key < node.getKey()) { const newNode = this.insert(key, value, node.getLeft()); - this.balanceNode(node); // back-tracking + this._balanceNode(node); // back-tracking return newNode; } const newNode = this.insert(key, value, node.getRight()); - this.balanceNode(node); // back-tracking + this._balanceNode(node); // back-tracking return newNode; } + /** + * @public + * remove a node by its key + * and maintains the tree balanced by applying the necessary rotations + * @param {number|string} key + * @param {AvlTreeNode} node + * @return {boolean} + */ remove(key, node = this._root) { if (node === null) return false; if (key < node.getKey()) { const removed = this.remove(key, node.getLeft()); - this.balanceNode(node); + this._balanceNode(node); return removed; } if (key > node.getKey()) { const removed = this.remove(key, node.getRight()); - this.balanceNode(node); + this._balanceNode(node); return removed; } diff --git a/src/avlTreeNode.js b/src/avlTreeNode.js index 648dd6e..f502985 100644 --- a/src/avlTreeNode.js +++ b/src/avlTreeNode.js @@ -10,7 +10,6 @@ const BinarySearchTreeNode = require('./binarySearchTreeNode'); * @class AvlTreeNode * @extends BinarySearchTreeNode */ - class AvlTreeNode extends BinarySearchTreeNode { constructor(key, value) { super(key, value);