Commit graph

313 commits

Author SHA1 Message Date
Revone a1cfac93da test: Testing coverage has increased to 91.2%. 2023-11-10 23:44:24 +08:00
Revone fd416c5d6e docs: Almost all methods of data structures have added comments on time and space complexity. 2023-11-10 16:24:24 +08:00
Revone d3a56a5c7a docs: Adding time and space complexity comments to all Binary Tree data structures. 2023-11-10 13:32:18 +08:00
Revone cef8b04a9f chore: Add comments for the time and space complexity of all methods for the BinaryTree. 2023-11-10 11:01:49 +08:00
Revone c2c7011e15 refactor: Unified API parameters, streamline syntax, exclude methods already present in the parent class. 2023-11-09 20:25:54 +08:00
Revone 28207b6d45 perf: Unified all APIs, all parameters that accept node types can also accept node keys as parameters. 2023-11-09 17:47:02 +08:00
Revone 50d1a168e7 [perf] renamed tree-multiset to tree-multimap 2023-11-08 09:26:43 +08:00
Revone 57a95e94db [rb-tree] The red-black tree has been perfectly implemented and inherits from a BST. It has also passed a certain level of testing. [binary-tree] All traversal methods are compatible with sentinel nodes in the red-black tree. 2023-11-07 19:57:35 +08:00
Revone b78d92fcd1 [binary-tree] Move the print method inside BinaryTree. [rb-tree] Replace sentinel nodes with NaN. [bst] Replace all direct assignments to _root with calls to the _setRoot method. 2023-11-07 17:41:51 +08:00
Revone ea89c0278b [rb-tree] RedBlackTree has inherited from BST and implemented it perfectly. 2023-11-07 17:02:35 +08:00
Revone 120b5e6bc2 [rb-tree] Change the default type of home nodes to 'undefined' and pass the test of adding and deleting 100,000 data records. 2023-11-07 16:27:24 +08:00
Revone 996fd128ed [binary-tree] Perfectly solved the null problem, in BST, AVLTree, and TreeMultiset, only 'undefined' is used as the empty node. 2023-11-07 12:26:16 +08:00
Revone 8a518f95b7 [project] codebase reformated 2023-11-06 19:44:01 +08:00
Revone 25b9e1e9e4 [graph] To facilitate users who are not familiar with the Tarjan algorithm, provide the following methods: getCycles, getSCCs, getBridges, getCutVertexes, getDFNMap, and getLowMap. 2023-11-06 14:47:00 +08:00
Revone d6b394446a [binary-tree] All traversal methods offer an includeNull parameter to support the output of null nodes. 2023-11-05 21:19:59 +08:00
Revone a85ea70cee [pkg] v1.41.9 published 2023-11-04 21:31:15 +08:00
Revone 62e55b84bd [graph] The getAllPathsBetween method in the [graph] provides a 'limit' parameter to control this exponential time complexity method from entering into a deadlock state. The getMinPathsBetween method, by default, calls the Dijkstra method to avoid invoking the excessively high time complexity method, getAllPathsBetween. 2023-11-04 21:23:02 +08:00
Revone 5af93dda72 [benchmark] Determine the order of magnitude for most performance tests. Report metric reductions. 2023-11-04 17:28:52 +08:00
Revone 025a90a145 [graph] use 'Set' in dfs instead of 'Map' 2023-11-04 15:47:24 +08:00
Revone 0ecc163944 [project] Replace the performance test report in README.md every time instead of inserting incrementally. 2023-11-04 10:19:09 +08:00
Revone 24a961f692 [BST, AVL] The 'get' method follows the binary search of a BST for bug fixes during queries. [Project] The editor uses 'tsconfig.json' for code checking to be compatible with the 'test' directory, but compiles using their respective configuration files. 2023-11-04 10:00:51 +08:00
Revone 4614773413 [binary-tree] Merge the operation of modifying the value into the insert query process to improve performance. [benchmark] Enhance performance test cases and move existing performance tests from unit tests to the 'performance' section. Improve the benchmark test report. Refine the logic of the report generator. 2023-11-02 21:38:10 +08:00
Revone 68aa49f9b1 [project] Decouple integration testing from the CI workflow. 2023-11-01 18:19:49 +08:00
Revone e9f2359365 [binary-tree] Let the get method call getNode instead of getNodes. [rbtree] Use rigorous testing to verify that the properties of nodes in a red-black tree adhere to the red-black tree rules after insertion and deletion. 2023-11-01 17:51:38 +08:00
Revone c82190764e [rbtree, binary-tree] Further testing of the Red-Black Tree is required. The 'get' method in BinaryTree should be renamed to 'getNode,' and an additional 'get' method should be added. 2023-11-01 13:48:01 +08:00
Revone ea3ab1283e [rbtree] extracted RBTNColor to types 2023-11-01 11:52:44 +08:00
Revone 82168eb4a2 [rbtree] Currently, the insertion and deletion of 1000 data entries are supported. However, when the data volume increases to 10000 entries, null value issues are bound to arise due to repetitive deletions and additions. 2023-10-31 23:21:54 +08:00
Revone ed7ead3744 [rbtree] The first successful implementation of Red-Black Tree. 2023-10-31 22:31:56 +08:00
Revone 822b918d8b [binary-tree] type errors fixed 2023-10-31 12:01:10 +08:00
Revone 8712bbd3c9 [core] All data structures have had their member variables access control optimized. 2023-10-31 11:15:39 +08:00
Revone 1ec5a19172 [core] Besides Binary Trees and Graphs, access control optimizations have been applied to member variables. 2023-10-31 10:34:41 +08:00
Revone 3009c14c24 [queue] Added some alias methods. 2023-10-31 09:03:06 +08:00
Revone 121516f303 [core] Rename all 'val' variables to 'value'. 2023-10-30 20:27:08 +08:00
Revone fcec29f32c [graph test] edge cases enriched 2023-10-30 20:08:25 +08:00
Revone d44788bea9 [graph] Modify the data structure design of the graph to change the generics of Vertex and Edge to defaults, where it is possible to only pass the value types of Vertex and Edge for increased usability. 2023-10-30 18:27:58 +08:00
Revone c001251cfc [binary-tree] this._defaultCallbackByKey deprecated 2023-10-30 11:40:03 +08:00
Revone bf5b865e2c [binary-tree] bug fix#27 2023-10-30 11:14:41 +08:00
Revone f87e682f26 [test] test coverage enriched to 90.37% 2023-10-29 21:52:27 +08:00
Revone c492af0461 [linked-list] Standardize the method names of DoublyLinkedList and SinglyLinkedList. 2023-10-29 16:43:19 +08:00
Revone bd1720973a [test] Increase the test coverage to 89.51. 2023-10-28 23:54:27 +08:00
Revone 6c45f53f72 [heap, priority-queue, binary-indexed-tree] Heap and PriorityQueue constructors use a single object as a parameter for uniformity with the design of other data structures.
Binary Indexed Tree includes the getPrefixSum method.
2023-10-28 17:37:51 +08:00
Revone c11cc4527b [graph] The removal method in the graph data structure is standardized to 'delete' 2023-10-28 15:58:48 +08:00
Revone f8e0607b25 [trie] The Trie's getWords method now offers an optional parameter to retrieve all words in case of an empty string input. 2023-10-28 15:50:42 +08:00
Revone f90afe0b57 [binary-tree] The binary tree's BFS and level-order traversal results should be the same. However, for convenience, we provide an additional method called listLevels to display traversal results in levels. 2023-10-27 22:30:52 +08:00
Revone edad774263 [project] IDE formated 2023-10-27 18:07:40 +08:00
Revone 06dc8bdc4d [binary-tree] Change the design so that when instantiating the BinaryTree data structure, there's no need to specify the node type; instead, use the second default generic parameter and its default value. 2023-10-27 18:04:31 +08:00
Revone af23af911a [binary-tree] renamed _loopType to _iterationType 2023-10-27 17:17:27 +08:00
Revone f2d3be7574 [binary-tree] Translate the return value type inference for methods that take a callback function as a parameter. 2023-10-26 20:26:06 +08:00
Revone 31c228668e [optimization] allow all list datatype delete methods to accept null as an input argument 2023-10-26 16:45:08 +08:00
Revone 8df45c5c52 [binary-tree] Dynamically infer traversal method return values based on callback function results. 2023-10-25 21:09:11 +08:00
Revone e45854d3f4 [project] Optimize the build configuration to be compatible with both earlier and later versions of Node.js. Switch to using tsup for UMD module output. Format code using an IDE. 2023-10-25 15:51:50 +08:00
Revone 063b702236 [project] Achieve a rational subpackage structure that enables individual subpackages to be independently exportable. 2023-10-25 11:19:03 +08:00
Revone c8f0e23704 [project] Ensure the type files in the "types" directory match those in the "src" directory. 2023-10-25 09:57:04 +08:00
Revone 74d4294320 [binary-tree] Provide comprehensive JSDoc comments for the enhanced APIs. 2023-10-24 09:25:33 +08:00
Revone 6c9578368c [binary-tree] Add an 'iterationType' parameter to all methods compatible with both recursion and iteration, allowing for specifying a particular iteration method in each method. 2023-10-24 00:03:48 +08:00
Revone 3983ab089c [binary-tree] Each method that traverses based on the root node can specify any node within the tree as the root node. 2023-10-23 22:36:49 +08:00
Revone 48e94f29ed [binary-tree] Update the testing API to the new version. 2023-10-23 21:22:07 +08:00
Revone 0417ee5009 [binary-tree] Translate all traversal methods into callback function forms to enhance API convenience and readability. 2023-10-23 03:02:12 +08:00
Revone 3a86a5c37d [binary-tree, graph] Replace all code that uses Arrays as makeshift Queues with actual Queues to improve efficiency. [binary-tree] Remove most methods for calculating sums and modifying properties, adopting a generic callback-based design. [bst] Enable default batch addition in BST using sorted binary insertion to maintain tree balance as much as possible. 2023-10-21 23:56:14 +08:00
Revone a6329163f7 1. No need for dfsIterative; integrate it directly into the dfs method. 2. Allow for public configuration of setLoopType. 3. Replace subTreeAdd with subTreeForeach for improved clarity and flexibility; provide a callback for enhanced versatility. 4. Standardize the naming of certain methods and parameters. 2023-10-21 20:03:54 +08:00
Revone 961e4e5f8c [heap] fibonacci heap implemented. [test] big O estimate. [project] no-unused-vars config to warn 2023-10-21 01:59:10 +08:00
Revone 4fa0816223 [core] Shared Comparator and DFSOrderPattern among multiple data structures. ESLint config improved 2023-10-20 11:43:26 +08:00
Revone 2953ec61af [git] Overwrite the rbtree branch based on the old version of the main branch 2023-10-19 09:42:24 +08:00
zrwusa a0c9c17345
Merge branch 'main' into rbtree 2023-10-19 09:29:01 +08:00
Revone 08afafe693 [trie] renamed ambiguous methods and add comments to all methods. 2023-10-18 18:54:33 +08:00
Revone 47fcfabae7 [binarytree] modified the getDepth method to adhere to the proper definition of "tree depth." 2023-10-18 18:28:36 +08:00
Revone fb52440469 [trie] variable renamed 2023-10-18 17:31:01 +08:00
Revone 9cf303edd4 Merge branch 'main' into trie 2023-10-18 17:11:30 +08:00
Revone 07825744f4 [tree] getHeight returns faulty height bug fixed 2023-10-18 17:07:27 +08:00
Revone 1627b633bd [trie] getHeight returns faulty height bug fixed. Variables renamed for best practice 2023-10-18 17:05:38 +08:00
Revone 36153238b7 [trie] support casesensitivity. getWords bug fixed 2023-10-18 14:57:47 +08:00
Revone 9764f2a5c6 [binary-tree, graph] In order to optimize the design of Binary Trees, unnecessary abstract classe removed, while enforcing method constraints between base classes and subclasses through interfaces. For Graph, it is necessary to use an abstract class as the base class, and interface constraints should be applied. Any data structures that are not within the scope of the plan deleted. 2023-10-17 21:06:41 +08:00
Revone 727cc87ca5 [BinaryTree, Heap] In abstract classes, only retain abstract methods. Replace the generic 'T' with 'E' in Heap and PriorityQueue 2023-10-16 20:34:22 +08:00
zrwusa fc7177130c
Merge branch 'main' into heap 2023-10-16 00:17:37 +08:00
Revone 219e41f32e [heap] test 2023-10-16 00:14:57 +08:00
Kirk Qi dd7b641273 [heap, priority queue] Heap improved. References #123: redesigned 2023-10-15 22:09:26 +08:00
Revone 14dae1c1cd test 2023-10-15 22:04:33 +08:00
Revone 4d01fa413e [core] Clean up unnecessary redundancies in the interfaces and rectify any illogical interface definitions. 2023-10-11 20:21:20 +08:00
Revone 836927ab82 [core] To compile a CommonJS module in the "dist" directory into ES6 code. Fixing some missing bugs in overloaded methods. 2023-10-11 18:44:59 +08:00
Revone 8b9ef598e5 [binary-tree] To adhere to best practices, rename certain methods and replace optional parameters with default values. 2023-10-10 23:13:52 +08:00
Revone 31aa92e761 [binary-tree] Replace optional parameters with default values 2023-10-10 23:01:13 +08:00
Revone 8b8e781607 [core] Rename those legacy IDs that have not been updated to 'key' 2023-10-10 22:39:31 +08:00
Revone f08819eb83 [core] In order to adhere to best practices, rename the DFS method and the BFS method as dfs and bfs. 2023-10-10 22:15:01 +08:00
Revone ed1ecf541f [binary-tree] unnecessary geters and setters removed 2023-10-10 21:56:55 +08:00
Revone 3bffa7320c [core] rename id to key 2023-10-10 20:13:47 +08:00
Revone 45c49c99bf [core] renamed id to key 2023-10-10 19:55:52 +08:00
Revone 0c5df67215 [readme] badages updated 2023-10-10 17:22:18 +08:00
Revone 2bdfd79b9f [rbtree] implemented, but with bugs 2023-10-10 10:28:23 +08:00
Revone 8659e1d09d [pkg] code quality improved to 99% 2023-10-06 20:51:55 +08:00
Revone 1687f3cde8 [core] HashTable, HashMap, SkipList implemented 2023-09-29 17:37:30 +08:00
Revone 7d566f1c33 [test] Test case coverage is 63.1%. 2023-09-26 17:06:17 +08:00
Revone bd25485555 [project] generic naming standardized 2023-09-26 13:50:40 +08:00
Revone 80675e2bbb [BinaryTree] leftSum feature eliminated 2023-09-25 17:18:14 +08:00
Revone 96621c72e5 [RBTree] first commit of RBTree. [HashTable] first commit 2023-09-25 15:48:24 +08:00
Revone ea8f993a4a [prettier] bracket spacing false 2023-09-22 10:43:16 +08:00
Revone 25c88edcd6 [README] badges added. 2023-09-22 10:40:12 +08:00
Revone b4643625a0 test coverage report supported. Code quality enhanced and support multiple environments such as ES6 (ESModule), ES5 (CommonJS), and a single file for both browser and Node.js environments (UMD). Supported for source maps. CODE-OF-CONDUCT.md, COMMANDS.md, SECURITY.md, .gitattributes added. 2023-09-22 00:53:34 +08:00
Revone b263262a46 [project] github workflow added. eslint added. formating code by using prettier. 2023-09-21 12:52:17 +08:00
Revone 95b44f439b [project] ESLint applied 2023-09-20 11:39:24 +08:00
Revone 80570451de [TreeMultiset], remove unnecessary parameters and adjust the 'addMany' method. 2023-09-19 23:10:09 +08:00
Revone 6f3baa9c79 [BST] BST has added an 'addMany' method, supports batch insertion using binary splitting, supports both recursive and iterative approaches. 2023-09-19 22:47:58 +08:00
Revone 0abd5eced7 Avoid using the Array.unshift method to slightly enhance AVLTree insertion performance. 2023-09-19 17:03:53 +08:00
Revone 70f439da13 v1.3.3 published 2023-09-19 17:00:25 +08:00
Revone 55704871b6 v1.3.1 published, new Queue implemented from SinglyLinkedList, and ArrayQueue implemented from Array 2023-09-18 22:04:39 +08:00
Revone 199a916d50 v1.21.3 published 2023-09-12 11:37:36 +08:00
Revone 773c970667 Establish a unified code editor encoding standard by .editorconfig file. 2023-09-12 11:15:20 +08:00
Revone 450f051138 Optimize the overall codebase and directory structure. 2023-09-12 11:10:09 +08:00
Revone b0774bee5b [core] remove all the unnecessary files and directories when publishing the npm package 2023-09-09 23:49:53 +08:00
Revone c7e1887b96 v1.21.0 published 2023-09-07 22:28:00 +08:00
Revone 26ab0be17b [BinaryTree] isMergeDuplicatedNodeById removed, [MapGraph] MapGraph added 2023-09-07 21:00:22 +08:00
Revone f3b2398d20 [BinaryTree] isMergeDuplicatedNodeById removed, [MapGraph] MapGraph added 2023-09-07 21:00:10 +08:00
Revone 6f86f71cdd Add sort method in heap.Ready to publish v1.20.0 2023-09-01 12:43:33 +08:00
Revone d93895dfff remove assets for reduce the size of package 2023-08-31 22:32:11 +08:00
Revone 407c3b104a Tidying up the code and identifying any further requirements that need to be marked as TODO. 2023-08-31 22:25:41 +08:00
Revone 2d1010b352 Rework the add, addMany, and fill methods of AbstractBinaryTree. Refactor the AddMany method of TreeMultiset. Fix the bug in TreeMultiset where all Node counts become 1 after calling the perfectBalance method. Remove the unnecessary configuration of autoIncrementId. 2023-08-31 20:02:31 +08:00
Revone bd71edc536 images removed, heap docs revised 2023-08-31 00:50:23 +08:00
Revone 60e5824524 The APIs of Heap and Priority Queue got optimized 2023-08-31 00:18:13 +08:00
Revone dccf2986f0 Compatible with standalone data structure libraries. 2023-08-30 14:27:18 +08:00
Revone 4c14fae966 separate the bst project 2023-08-30 11:55:06 +08:00
Revone d4d50fef09 first commit 2023-08-30 11:44:27 +08:00
Revone ea5f782577 rename the priority to priorityExtractor 2023-08-30 10:49:49 +08:00
Revone df2f940189 Redesigned for greater coherence, TreeMultiset now inherits from AVLTree, with the 'count' member variable relocated to TreeMultiset. Revisions to the documentation have been made accordingly. 2023-08-29 20:29:53 +08:00
Revone 1a893cfd20 After extracting the count member variable to TreeMultiset, the initial test has passed successfully. 2023-08-29 17:29:57 +08:00
Revone 87b7e420b5 remove createNode function from every Binary Tree Nodes 2023-08-28 20:04:43 +08:00
Revone 61f465fe99 Added a method for data type validation through type conversion to Zod schemas. 2023-08-28 18:43:09 +08:00
Revone de5a001b6a The Graph's API has been optimized. 2023-08-28 11:15:04 +08:00
Revone 363c66490a Modify all methods of BinaryTreeNode to make the val parameter optional. 2023-08-28 08:40:31 +08:00
Revone 0b330aeadd Enable adding nodes using both Vertex instances and the vertex parameter in the Graph. For adding edges, support both Edge instances and the src, dest parameter approach simultaneously. 2023-08-27 22:26:30 +08:00
Revone 8ac4e0e7c4 Standardize methods for all BinaryTrees, enabling support for both TreeNode parameters and TreeNodeId as arguments. 2023-08-27 21:14:18 +08:00
Revone d29ff07f40 Swap the positions of val and id to enhance the intuitiveness of the API. Revise the design of familyPosition in AbstractBinaryTree such that the previous assignment approach is replaced with a real-time retrieval method. Standardize the BST.remove method with the AbstractBinaryTree.remove method. Eliminate the redundant attribute name from TreeNode. 2023-08-26 10:24:31 +08:00
Revone 8db8976503 All the RecursiveNodes renamed as NodeNested pattern. TreeMultiSet extended from AVLTree 2023-08-24 11:13:28 +08:00
Revone 2ea57d26ae For the sake of API simplicity, if val is not provided, id can be used in its place. 2023-08-24 00:01:44 +08:00
Revone 6bc894c5c1 Organized all the interfaces. Implemented the removeEdgeSrcToDest method for the Graph class. 2023-08-23 23:03:19 +08:00
Revone 860d18d222 "AbstractBinaryTree" has been extracted from "BinaryTree." TreeMultiSet has been optimized. 2023-08-23 13:15:30 +08:00
Revone 849e3c6bca Test and debug the bug related to BinaryTreeNode's handling of object types.Revise the design of the constructor to incorporate abstract methods for enforcing the requirement that subclasses must implement the _createVertex and _createEdge methods. 2023-08-23 11:39:01 +08:00
Revone 60e08d3ac5 Successfully implemented recursive type inference for the BinaryTreeNode type by passing the node constructor through the constructor, effectively addressing the type inconsistency caused by invoking parent class methods after inheritance. 2023-08-22 22:50:16 +08:00
Revone d3f5dd4a9e edge1.data has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class. 2023-08-22 13:30:22 +08:00
Revone 1b441f1d47 By constraining the necessity to implement the _createNode method, we ensure that the node types are correct within the subclass. The current design of the Graph needs further optimization. 2023-08-22 08:58:42 +08:00
Revone c1b5969c51 Support TypeScript v5.1.6. Standardize all getters and setters. Adjust access permissions for accessors, set access permissions for protected or private member variables, and indicate them using the private identifier "_". 2023-08-21 16:17:01 +08:00
Revone 2c82e31a29 Optimize the insertAfter method of SinglyLinkedList, insertAfter, insertBefore, and delete methods of DoublyLinkedList to directly add an element after a given node's reference without the need for traversal. And conducted performance test.
Modify the insertBefore and delete methods of SinglyLinkedList to align their method APIs with those of DoublyLinkedList.
2023-08-20 18:52:57 +08:00
Revone dcec645f05 Integration test for SinglyLinkedList and DoublyLinkedList completed 2023-08-20 00:53:18 +08:00
Revone b9dba24bf3 re-implemented the SinglyLinkedList and DoublyLinkedList, and completed the unit tests. 2023-08-20 00:12:30 +08:00
Revone 91c47c28c2 SinglyLinkedList reimplemented and tested 2023-08-19 23:12:16 +08:00
Revone 13059971a8 Isolated type removed 2023-08-18 22:51:45 +08:00
Revone 694ca46893 bug fixed of method isValid for PriorityQueue and Heap, test cases enriched for PriorityQueue and Heap, SpecifyOptional type added 2023-08-18 22:39:45 +08:00
Revone 5db5561999 Heap test cases added 2023-08-18 13:40:08 +08:00
Revone 07231cd4c4 v1.15.2 published 2023-08-17 00:50:14 +08:00
Revone 2d07c5e5af update Typescript version to 4.9.5, DirectedGraph tests completed, Remedial measures have been taken in TypeScript versions 5.0 and above to enforce consistent access modifiers for getters and setters., annotation content has been enriched. 2023-08-16 22:44:38 +08:00
Revone 02bc7c4b8f add function names 2023-08-16 01:35:16 +08:00
Revone 4da59257e8 Name the addition method as "add" within the unified API 2023-08-14 20:39:10 +08:00
Revone 8bdc3218db Name the addition method as "add" within the unified API 2023-08-14 19:43:52 +08:00
Revone d5e64f8127 api docs deploied, graph basic test completed 2023-08-14 08:47:26 +08:00
Revone 5d25e6f05b images cropped 2023-08-13 19:59:28 +08:00
Revone dec3146ec3 Circular dependencies check supported 2023-08-12 22:54:56 +08:00
Revone c6e933acf0 All code annotations have been completed. 2023-08-12 11:35:25 +08:00
Revone 72c4b7ad2b All code annotations have been completed. 2023-08-12 11:34:20 +08:00
Revone 22a4e4136d recover the lost images 2023-08-12 01:19:52 +08:00
Revone 2efebe82c2 support test by using Jest 2023-08-12 01:11:08 +08:00
Revone 0770aeb2d1 version 0.9.16 published 2023-08-11 22:46:43 +08:00
Revone 62bac55b6e markdown modified 2023-06-28 00:42:28 +08:00
Revone e0341ac53a diagram of complexities 2023-06-28 00:32:34 +08:00
Revone d0885cd561 exports bug fixed 2023-06-16 10:58:17 +08:00
Revone d57926602d first commit 2023-06-16 00:34:28 +08:00