Commit graph

323 commits

Author SHA1 Message Date
Revone 8051850331 feat: When comparing two values in the Heap and binary search tree, if one of the values is of object type, it is mandatory to pass a custom comparator function. 2024-01-29 20:23:06 +08:00
Revone 3028a78985 Refactor: Abandon the use of Comparable types as keys for the binary tree, as the '>', '>=', '<', '<=' operators are supported by the any type. The heap also adopts the same comparator as the binary tree. 2024-01-29 11:35:24 +08:00
Revone 02d71a23ba Refactor: All binary tree data structures now support the toEntryFn for extracting key and value from raw data at once, avoiding users from having to traverse data multiple times, thus improving performance. Chore: Explicitly use the override keyword. 2024-01-26 18:20:15 +08:00
Revone 3c26538c2e release: 1.51.8 2024-01-25 10:55:59 +08:00
Revone 0013242189 Refactor: In the binary search tree data structure, use a comparator instead of a variant configuration for comparison. 2024-01-25 10:24:25 +08:00
Revone 89dadfccc2 Refactor: Remove the unnecessary design of the extractor in the Binary Search Tree (BST). Utilize 1, -1, and 0 to replace the original comparison results GT, LT, and EQ. 2024-01-25 09:38:03 +08:00
Revone 1303aba070 refactor: Use Comparable type constraint for the key in the binary tree to improve comparator performance. 2024-01-24 18:38:34 +08:00
Revone ae11bca83c Refactor: Added the _ensureCallback method to eliminate redundant code. 2024-01-19 18:02:56 +08:00
Revone 3fa7155c97 fix: #82. refactor: Minor performance optimization, rewrite the _compare method within the Red-Black Tree. test: Change the test sequence in binary-tree-overall.test. 2024-01-19 17:13:25 +08:00
Revone 18b1fab16d feat: Restore the TreeNode data structure. Add number utilities to the utils module. docs: Update POSTS_zh-CN.md. 2024-01-17 22:27:38 +08:00
Revone 25e9f36577 feat: Remove the meaningless Tree data structure.
refactor: Adjust the logic of isRealNode for a slight performance improvement.
docs: table fixed
2024-01-16 11:26:43 +08:00
Revone 56f1fabfca refactor: Renaming SENTINEL to NIL and placing the NIL node in the BinaryTree allows for direct equality checks in isNIL and isRealNode, avoiding excessive operations to improve performance. As a result, the performance of the get method in AVLTree has tripled. 2024-01-15 21:05:42 +08:00
Revone 9915ce9a0d Refactor: Rename _defaultOneParamCallback to _DEFAULT_CALLBACK. Adopt early return code style in the ensureNode method. Rename some internal recursive method names. 2024-01-15 12:12:01 +08:00
Revone 76df347da5 efactor: completely eliminate the use of enumerations 2024-01-14 19:49:50 +08:00
Revone 25de27cf6c fix: Explicitly specify IterationType. 2024-01-14 18:59:28 +08:00
Revone a11c104dff refactor: Replace all enumerations with union types for significant performance improvements in BST, AVLTree, and RedBlackTree. 2024-01-14 03:04:07 +08:00
Revone a653d465fa Refactor: Use 'this.isRealNode' instead of explicit null checks in getHeight, getMinHeight, and getNodeByKey methods in the binary tree. In the red-black tree, directly invoke the parent class getNode method, significantly improving the speed of red-black tree node deletion and retrieval. 2024-01-12 14:15:05 +08:00
Revone 644ce69190 Refactor: Review methods in the binary tree that require explicit 'override' annotation. Feat: Add the 'getMutableCount' method to AVLMultiMap. 2024-01-12 11:28:15 +08:00
Revone e1631a8e3e refactor: Define a generic CRUD enum to represent operational states. 2024-01-12 11:07:33 +08:00
Revone 1f8fc1487c Refactor: Due to critical issues in the previous implementation of the Red-Black Tree, it has been deprecated and replaced with a new implementation of both the Red-Black Tree and TreeMultiMap. 2024-01-11 20:13:02 +08:00
Revone f8832a04c0 refactor: Constrain the getter size() from the base class. Refactor some inappropriate performance tests.
feat: Add sorting capability to performance test reports.
2024-01-09 15:57:30 +08:00
Revone 4747839d88 Refactor: Standardize addition and removal methods for all sequential data structures to push, pop, shift, unshift. 2024-01-09 12:04:50 +08:00
Revone 465744c2ec feat: Replace the AVLTree with a Red-Black Tree to implement TreeMultiMap, preserving the implementation of TreeMultiMap using AVLTree and renaming it as AVLTreeMultiMap. 2024-01-08 22:22:41 +08:00
Revone 5c9f4fd483 fix: #74 . Refactor: Implement the Tarjan algorithm separately for DirectedGraph and UndirectedGraph. In the previous design, the tarjan method was placed in the AbstractGraph class. However, Tarjan algorithm is used to find connected components in directed graphs and to solve bridges, articulation points, determine the presence of cycles (though not all), and biconnected components in undirected graphs. The algorithm for finding all cycles in the graph can be shared between directed and undirected graphs using the getCycles method. 2024-01-07 22:25:25 +08:00
Revone e91970c09f refactor: Directly constrain the methods clear, map, and filter in the base class.
feat: Implement the clear method in DirectedGraph, UndirectedGraph, and Trie.
docs: Add SPECIFICATION.md, SPONSOR.md, and SPONSOR_zh-CN.md. Adjust badge order and add a new contributor count badge.
2024-01-06 17:50:00 +08:00
Revone ba16f311c3 Refactor: Organize the access permissions of all member variables. Docs: Partial documentation for time and space complexity. 2024-01-05 15:37:28 +08:00
Revone eaf8912746 docs: Verify the time and space complexity for each method.
feat: Add the cutRest method to Deque.
refactor: Update the cut method in Deque to support the isCutSelf parameter.
2024-01-04 16:28:17 +08:00
Revone ecf4d6ad11 fix: Fix bug #71.
feat: Define abstract methods through a base class to add clone and isEmpty methods to all data structures. Add delete and deleteAt methods to Deque, Queue, and Stack data structures.
refactor: Optimize the type definition N to NODE for alignment with the design of TREE.
2024-01-03 15:52:10 +08:00
Revone 58ea2cb3c3 docs: Complete all code comments. 2024-01-01 10:45:32 +08:00
Revone 831ad3bd98 refactor: rename method 'getAt' to 'at' 2023-12-30 20:36:11 +08:00
Revone ff8f907192 feat: In the IterableEntryBase and IterableElementBase classes, add find, get, and has methods so that all inheriting data structures can have access to these methods. Also, override these methods in the necessary data structures as needed. 2023-12-30 18:44:24 +08:00
Revone c28deb8d81 refactor: Rename exemplarToNode to keyValueOrEntryToNode. feat: Implement the clone method for all data structures. 2023-12-30 17:50:57 +08:00
Revone baf1be4035 release: 1.50.0. docs: traversal methods 2023-12-29 11:24:25 +08:00
Revone 34d4abd9e6 fix: #38 Removed includeNull parameter from traversal methods.
feat: Removed unnecessary methods isNotNodeInstance and subTreeTraverse.
refactor: Organized the overloads of traversal methods.
2023-12-29 11:15:19 +08:00
Revone 689aa0f57e feat: Provide convenient option of the raw data processing function 'toEntry' in HashMap.options. 2023-12-25 20:24:41 +08:00
Revone eb590d6c27 feat: Remove support for the 'variant' option parameter in Red-Black Tree, meaning no support for reverse Red-Black Tree.
fix: Fix bug in the return value of the Red-Black Tree delete method.
test: Test the clone methods of all the binary tree data structures.
2023-12-25 10:56:04 +08:00
Revone c949b5b741 refactor: Rearrange constructor parameters for all data structures, with the first parameter being the output and the second parameter being a configuration object. Make all configuration object properties optional.
fix: Provide optional parameters for inheritable data structures to facilitate inheritance. #64
2023-12-24 17:44:55 +08:00
Revone d57d6072c2 fix: Fix bug in BST.isBST to make it compatible with inverse BST.
refactor: Use KeyOrNodeOrEntry as the parameter type consistently in the binary tree data structure.
test: Remove unnecessary performance reports and refactor loop code to use single lines wherever possible.
2023-12-23 11:53:18 +08:00
Revone 677340e99c refactor: Remove isSubtreeBST; using isBST alone is sufficient. Update BSTVariant to use STANDARD and INVERSE instead of MIN and MAX.
feat: Enhance isBST to support the detection of inverse binary search trees.
2023-12-23 09:41:04 +08:00
Revone 2247316d16 refactor: Remove the _addTo method from BinaryTree and TreeMultiMap.
feat: Reimplement Matrix.
docs: Use typedoc.json configuration to only output class documentation.
2023-12-22 19:59:38 +08:00
Revone dc6ef95f78 style: code base reformat 2023-12-21 10:26:45 +08:00
Revone c3db558607 Refactor: The default callback function now supports returning values for null and undefined nodes with undefined keys. The deleteVertex method in AbstractGraph has been made abstract. Unnecessary magnitude variables have been removed from the magnitude function. fix: In directed and undirected graphs, the deleteVertex method now removes edges from adjacent nodes when deleting a vertex. 2023-12-21 10:01:04 +08:00
Revone bbfa64fc64 fix: Fix the bug in the getCycles method. refactor: Rename some variables. 2023-12-19 12:15:44 +08:00
Revone 3e97e806ba refactor: Unify the return types of all methods and align them with Java, extract the print and hasValue methods to base class. This will make the code more consistent and easier to understand. 2023-12-12 21:14:17 +08:00
Revone e113a99b26 fix: bug fixed #58, DirectedGraph.getCycles returns an inexisting cycle. feat: hasValue method for HashMap. 2023-12-12 09:57:30 +08:00
Revone f0927e8b0a docs: Wrote a feature description for each data structure. refactor: Standardize the import of all types and objects 2023-12-11 20:27:05 +08:00
Revone 60a3154178 refactor: Differentiate between type imports and regular object imports. 2023-12-11 14:14:46 +08:00
Revone 9d4228c9fe refactor: Represent the optional parameters in the dijkstraWithoutHeap and dijkstra methods using default arguments. Use the Heap data structure instead of PriorityQueue. 2023-12-11 09:41:24 +08:00
Revone 1fc47918d2 refactor: Add an isNotNodeInstance method to every binary tree data structure to prevent node type errors. The getSuccessor method of Red-Black trees uniformly utilizes the getSuccessor method from BinaryTree. 2023-12-11 09:02:26 +08:00
Revone 26208e9157 release: 1.48.9 2023-12-08 20:03:48 +08:00
Revone 93201bddba perf: The add method of BinaryTree doesn't need to check for existence first, it can detect and add in a single traversal. Feat: Discard the ObjectDeque data structure. test: Increased test coverage for Deque and Queue. 2023-12-08 19:54:13 +08:00
Revone a02a9a94d2 refactor: Rewrite the lastKey method. The BinaryTree.add method filters out duplicate additions. Rename popLast and popFirst to pollLast and pollFirst. 2023-12-07 19:34:20 +08:00
Revone 1c8324147f feat: The addMany method in binary tree data structures supports both addMany(keys, values) and addMany(entries). 2023-12-07 10:19:17 +08:00
Revone 7ddad8eb65 docs: add methods for Binary Tree data structures 2023-12-07 09:21:56 +08:00
Revone 1b1d5c6669 feat: The add method of the binary tree is compatible with the multi-parameter mode of add(key, value), and it is also compatible with the entry method. 2023-12-07 09:16:25 +08:00
Revone f56542a07a refactor: renamed variables 2023-12-06 11:32:04 +08:00
Revone ce99f7988e release: 1.48.4 2023-12-06 10:42:12 +08:00
Revone 6cc250606b fix: bug fix for #51 . Removing a vertex from a DirectedGraph doesn't remove it's edges 2023-12-06 10:36:00 +08:00
Revone 241cb26a6f fix: bug fix for #52 2023-12-06 09:18:23 +08:00
Revone 785e92a87f release: 1.48.3 2023-12-04 22:05:15 +08:00
Revone 8a24a6d7a4 refactor: The binary tree data structure supports custom types for keys 2023-12-04 21:58:41 +08:00
Revone 7f5eb6cb70 refactor: Extract all methods such as 'some', 'every', 'entries', 'keys', 'values', 'forEach', 'reduce' into the base classes 'IterableElementBase' and 'IterablePairBase'. 2023-12-02 22:15:18 +08:00
Revone 87ea490458 feat: print method has been added in HashMap. chore: reformated HashMap test. docs: high-performance HashMap benchmark 2023-11-30 10:20:12 +08:00
Revone 65949b7d19 feat: Reimplement a more efficient HashMap and correctly rename the original HashMap as LinkedHashMap. 2023-11-30 09:59:01 +08:00
Revone 9a9571431c feat: Add keys, values, and clone methods to all binary tree data structures. 2023-11-27 18:01:59 +08:00
Revone e1e672b3b5 refactor: Extract the isNode and exemplarToNode methods to achieve best practices. 2023-11-27 13:38:26 +08:00
Revone 20550fb718 feat: Implement the [Symbol.iterator], forEach, filter, map, and reduce methods for Graph, specifically targeting the nodes. fix: type error fixed 2023-11-27 11:24:23 +08:00
Revone 6694f98e67 refactor: In SegmentTree data structure, only use 'undefined' and abandon the design where both 'null' and 'undefined' coexist. 2023-11-27 09:42:49 +08:00
Revone 86200435e8 refactor: In Stack data structures, only use 'undefined' and abandon the design where both 'null' and 'undefined' coexist. 2023-11-27 09:38:03 +08:00
Revone e89509eb34 refactor: In Linked List data structures, only use 'undefined' and abandon the design where both 'null' and 'undefined' coexist. 2023-11-27 09:31:11 +08:00
Revone f3df66eef3 refactor: In Graph data structures, only use 'undefined' and abandon the design where both 'null' and 'undefined' coexist. 2023-11-26 20:11:29 +08:00
Revone 982152abc0 fix: type fixed 2023-11-25 22:33:38 +08:00
Revone f9f9df81f5 feat: Perfectly implement fast conversion between data structures. Implement a getter size for Trie. docs: Add comments to the 'add' and 'addMany' methods of all binary tree data structures. 2023-11-25 22:32:09 +08:00
Revone 76db084bda refactor: Explicitly call the super.addMany method. chore: reformat project configs 2023-11-25 20:59:34 +08:00
Revone b099b759e8 refactor: The strategy of all binary tree data structures is to replace a node only when the same node is added. 2023-11-25 20:40:11 +08:00
Revone 18b895cb4c refactor: The parameters for the add and addMany methods in all binary tree data structures have been changed to the entry style, and the first test has passed. 2023-11-25 14:38:32 +08:00
Revone cd14ec79ec refactor: Use a type BTNExemplar to simplify the method parameters of binary tree data structures. 2023-11-24 09:58:10 +08:00
Revone 4930f87bcd feat: Add an 'elements' parameter to the constructors of all binary tree data structures to accept Iterable types. 2023-11-23 21:43:45 +08:00
Revone 8f9eb82bfd feat: To support conversion between data structures, Heap, PriorityQueue, Queue, Deque, SinglyLinkedList, DoublyLinkedList, and Stack have all added an 'elements' parameter for initializing the elements of the data structure. 2023-11-23 18:40:30 +08:00
Revone 5cf88d098e feat: All data structures except Graph have implemented *[Symbol.iterator], forEach, filter, map, reduce methods. 2023-11-23 13:19:13 +08:00
Revone 3205f90cf6 docs: Reorganize some content in the README 2023-11-22 19:00:06 +08:00
Revone b53156fb48 fix: createTree return type check 2023-11-22 17:37:43 +08:00
Revone edbbf4a951 fix: type check for 'typeof this' is not supported in TS 4.9.5 2023-11-22 17:31:51 +08:00
Revone a41e222481 feat: Implement forEach, filter, map, reduce, and [Symbol.iterator] methods for all binary tree data structures 2023-11-22 17:18:37 +08:00
Revone 01b969edca refactor: rename NIL of RedBlackTree to Sentinel 2023-11-21 17:44:22 +08:00
Revone 54c74f9af6 feat: The print method supports switches for empty nodes and guardian nodes. refactor: It eliminates some unnecessary type definitions. 2023-11-21 17:30:57 +08:00
Revone 7e3aeb8d2a chore: reformat codebase 2023-11-20 19:27:25 +08:00
Revone 92552da31c fix: binary tree print bug fixed. test: integration test of rb-tree 2023-11-20 17:30:55 +08:00
Revone 5eaf1d6aab fix: Ignore inserting the duplicate into RedBlackTree. refactor: renamed the helpers to common 2023-11-20 16:15:49 +08:00
Revone d3a6bdac25 fix: type error fixed. docs: Remove unnecessary 'Software Engineering Design Standards'. 2023-11-20 15:14:13 +08:00
Revone 7c6e5d3b1c refactor: HashMap supports custom hash functions. 2023-11-20 13:03:39 +08:00
Revone 1e2013df5e refactor: Eliminate unnecessary data structures. test: Add performance comparison tests with native Map and Set. 2023-11-20 09:51:34 +08:00
Revone b4e89d9f72 refactor: Discard the unnecessary Iterator class in Deque and HashMap, and instead implement using Generators. 2023-11-19 21:09:44 +08:00
Revone b089cf47b3 refactor: In the Deque data structure, abandon the Iterator class and implement using a Generator instead. 2023-11-19 20:48:53 +08:00
Revone 6f74397f8d fix: Iterator supports function length or function size 2023-11-19 09:04:48 +08:00
Revone 5c6803b1a9 docs: Deque docs enriched, big o notations 2023-11-19 08:56:37 +08:00
Revone a4a35731d2 fix: Deque delete param correctly used 2023-11-17 22:43:12 +08:00
Revone 2634c99388 feat: high-performance Deque implemented 2023-11-17 22:37:35 +08:00
Revone d761e79e4d fix: Bug fix for 'resize', 'insertAt', and 'deleteAt'. 2023-11-17 18:44:14 +08:00
Revone e7be7b559d feat: Implemented Deque independently and conducted performance tests, and eliminated the redundant data structure ArrayDeque. Add performance test cases for DoublyLinkedList. 2023-11-17 16:11:31 +08:00