{"id":42893518,"url":"https://github.com/mreshboboyev/tree-data-structure","last_synced_at":"2026-01-30T15:02:05.634Z","repository":{"id":331258896,"uuid":"1092849630","full_name":"MrEshboboyev/tree-data-structure","owner":"MrEshboboyev","description":"Enterprise-ready tree data structure library in C# with multiple implementations (BST, AVL, Red-Black, B-Tree), advanced operations, and comprehensive functionality.","archived":false,"fork":false,"pushed_at":"2025-12-31T18:22:22.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-05T03:12:42.022Z","etag":null,"topics":["algorithms","avl-tree","b-tree","binary-search-tree","csharp","data-structures","enterprise","generic","red-black-tree","tree"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MrEshboboyev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-09T12:45:42.000Z","updated_at":"2025-12-31T18:22:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MrEshboboyev/tree-data-structure","commit_stats":null,"previous_names":["mreshboboyev/tree-data-structure"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MrEshboboyev/tree-data-structure","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrEshboboyev%2Ftree-data-structure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrEshboboyev%2Ftree-data-structure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrEshboboyev%2Ftree-data-structure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrEshboboyev%2Ftree-data-structure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrEshboboyev","download_url":"https://codeload.github.com/MrEshboboyev/tree-data-structure/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrEshboboyev%2Ftree-data-structure/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28914895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T12:13:43.263Z","status":"ssl_error","status_checked_at":"2026-01-30T12:13:22.389Z","response_time":66,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","avl-tree","b-tree","binary-search-tree","csharp","data-structures","enterprise","generic","red-black-tree","tree"],"created_at":"2026-01-30T15:02:02.020Z","updated_at":"2026-01-30T15:02:05.626Z","avatar_url":"https://github.com/MrEshboboyev.png","language":"C#","readme":"# Enterprise Tree Data Structure Library\n\nA comprehensive, generic, and enterprise-ready tree data structure library implemented in C# with support for multiple tree types, advanced operations, and extensive functionality.\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Supported Tree Types](#supported-tree-types)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [API Reference](#api-reference)\n- [Advanced Operations](#advanced-operations)\n- [Performance Characteristics](#performance-characteristics)\n- [Examples](#examples)\n- [Testing](#testing)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Overview\n\nThis library provides a complete implementation of various tree data structures with a focus on performance, functionality, and extensibility. It includes multiple tree types optimized for different use cases, comprehensive traversal algorithms, and advanced tree operations.\n\n## Features\n\n- **Generic Implementation**: Support for any type that implements `IComparable\u003cT\u003e`\n- **Multiple Tree Types**: Binary Search Tree, AVL Tree, Red-Black Tree, and B-Tree\n- **Comprehensive Operations**: Insert, remove, search, traversal, and advanced operations\n- **Self-Balancing Trees**: AVL and Red-Black trees for guaranteed O(log n) operations\n- **Multiple Traversal Algorithms**: In-order, pre-order, post-order, level-order, and reverse in-order\n- **Advanced Operations**: Lowest Common Ancestor (LCA), kth smallest/largest, range queries\n- **Factory Pattern**: Easy creation of different tree types\n- **IEnumerable Support**: LINQ compatibility\n- **Parent References**: Bidirectional navigation support\n- **Memory Efficient**: Optimized node structure\n- **Thread-Safe Ready**: Implementation patterns for thread safety\n\n## Supported Tree Types\n\n### Binary Search Tree (BST)\n- Basic binary search tree implementation\n- O(log n) average case operations, O(n) worst case\n- Supports all basic operations and traversals\n\n### AVL Tree\n- Self-balancing binary search tree\n- Guaranteed O(log n) operations through rotation-based balancing\n- Maintains strict height balance\n\n### Red-Black Tree\n- Self-balancing binary search tree with color-based balancing\n- Guaranteed O(log n) operations\n- Less rigid balancing than AVL, potentially faster insertions/deletions\n\n### B-Tree\n- Disk-optimized tree structure\n- Multiple keys per node, efficient for large datasets\n- Configurable degree for optimization\n\n## Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/your-username/tree-data-structure.git\n```\n\n2. Open the solution in Visual Studio or build using .NET CLI:\n```bash\ndotnet build TreeDataStructure.sln\n```\n\n3. Run the application:\n```bash\ndotnet run --project TreeDataStructure/TreeDataStructure.csproj\n```\n\n## Quick Start\n\n```csharp\nusing TreeDataStructure;\n\n// Create a binary search tree for integers\nvar bst = new BinarySearchTree\u003cint\u003e();\n\n// Insert values\nbst.Insert(50);\nbst.Insert(30);\nbst.Insert(70);\nbst.InsertRange(new[] { 20, 40, 60, 80 });\n\n// Perform operations\nConsole.WriteLine($\"Tree height: {bst.Height}\");\nConsole.WriteLine($\"Tree count: {bst.Count}\");\nConsole.WriteLine($\"Min value: {bst.GetMin()}\");\nConsole.WriteLine($\"Max value: {bst.GetMax()}\");\n\n// Traversals\nConsole.WriteLine(\"In-Order Traversal: \" + string.Join(\" \", bst.InOrderTraversal()));\nConsole.WriteLine(\"Level-Order Traversal: \" + string.Join(\" \", bst.LevelOrderTraversal()));\n\n// Advanced operations\nConsole.WriteLine($\"Is balanced: {bst.IsBalanced()}\");\nConsole.WriteLine($\"Is valid BST: {bst.IsValidBST()}\");\n```\n\n## API Reference\n\n### ITree\u003cT\u003e Interface\n\nAll tree implementations implement the `ITree\u003cT\u003e` interface with the following members:\n\n#### Properties\n- `Count`: Number of elements in the tree\n- `Root`: Root node of the tree\n- `IsEmpty`: Whether the tree is empty\n- `Height`: Height of the tree\n\n#### Methods\n- `Insert(T value)`: Insert a value into the tree\n- `InsertRange(IEnumerable\u003cT\u003e values)`: Insert multiple values\n- `Remove(T value)`: Remove a value from the tree\n- `Contains(T value)`: Check if a value exists\n- `Find(T value)`: Find a node containing the value\n- `Clear()`: Remove all elements\n- `InOrderTraversal()`: Get values in sorted order\n- `PreOrderTraversal()`: Get values in pre-order\n- `PostOrderTraversal()`: Get values in post-order\n- `LevelOrderTraversal()`: Get values in level order\n- `ReverseInOrderTraversal()`: Get values in reverse sorted order\n- `GetMin()`: Get minimum value\n- `GetMax()`: Get maximum value\n- `GetHeight(TreeNode\u003cT\u003e node)`: Get height of a node\n- `GetDepth(TreeNode\u003cT\u003e node)`: Get depth of a node\n- `GetPathToNode(T value)`: Get path from root to a node\n- `GetNodesAtLevel(int level)`: Get all nodes at a specific level\n- `BreadthFirstSearch(T value)`: BFS for a value\n- `DepthFirstSearch(T value)`: DFS for a value\n- `GetLowestCommonAncestor(T value1, T value2)`: Get LCA of two nodes\n- `IsValidBST()`: Validate BST property\n- `GetKthSmallest(int k)`: Get kth smallest element\n- `GetKthLargest(int k)`: Get kth largest element\n\n### Tree Factory\n\nUse the `TreeFactory` to create different tree types:\n\n```csharp\n// Create different tree types\nvar bst = TreeFactory.CreateTree\u003cint\u003e(TreeType.BinarySearchTree);\nvar avl = TreeFactory.CreateTree\u003cint\u003e(TreeType.AvlTree);\nvar rb = TreeFactory.CreateTree\u003cint\u003e(TreeType.RedBlackTree);\nvar bTree = TreeFactory.CreateTree\u003cint\u003e(TreeType.BTree, 3); // B-Tree with degree 3\n```\n\n## Advanced Operations\n\n### Path Finding\nGet the path from root to a specific node:\n```csharp\nvar path = tree.GetPathToNode(42);\n```\n\n### Level Operations\nGet all nodes at a specific level:\n```csharp\nvar nodes = tree.GetNodesAtLevel(2);\n```\n\n### Lowest Common Ancestor\nFind the lowest common ancestor of two nodes:\n```csharp\nvar lca = tree.GetLowestCommonAncestor(25, 75);\n```\n\n### Kth Elements\nGet kth smallest or largest elements:\n```csharp\nvar kthSmallest = tree.GetKthSmallest(3); // 3rd smallest\nvar kthLargest = tree.GetKthLargest(2);   // 2nd largest\n```\n\n### Range Operations\nGet elements within a range:\n```csharp\nvar range = tree.GetRange(10, 50); // Values between 10 and 50\n```\n\n## Performance Characteristics\n\n| Operation | BST (Avg) | BST (Worst) | AVL Tree | Red-Black Tree | B-Tree |\n|-----------|-----------|-------------|----------|----------------|--------|\n| Search    | O(log n)  | O(n)        | O(log n)| O(log n)       | O(log_m n) |\n| Insert    | O(log n)  | O(n)        | O(log n)| O(log n)       | O(log_m n) |\n| Delete    | O(log n)  | O(n)        | O(log n)| O(log n)       | O(log_m n) |\n| Space     | O(n)      | O(n)        | O(n)     | O(n)           | O(n)     |\n\nWhere:\n- n = number of elements\n- m = degree of B-Tree\n\n## Examples\n\n### Basic Usage\n```csharp\nusing TreeDataStructure;\n\n// Integer tree\nvar intTree = new BinarySearchTree\u003cint\u003e();\nintTree.InsertRange(new[] { 50, 30, 70, 20, 40, 60, 80 });\n\n// String tree\nvar stringTree = new BinarySearchTree\u003cstring\u003e();\nstringTree.InsertRange(new[] { \"apple\", \"banana\", \"cherry\", \"date\" });\n\n// Custom comparable objects\npublic class Person : IComparable\u003cPerson\u003e\n{\n    public string Name { get; set; }\n    public int Age { get; set; }\n    \n    public int CompareTo(Person other)\n    {\n        return Age.CompareTo(other.Age);\n    }\n}\n\nvar personTree = new BinarySearchTree\u003cPerson\u003e();\npersonTree.Insert(new Person { Name = \"Alice\", Age = 30 });\npersonTree.Insert(new Person { Name = \"Bob\", Age = 25 });\n```\n\n### Self-Balancing Trees\n```csharp\n// AVL Tree - strict balance\nvar avlTree = new AvlTree\u003cint\u003e();\navlTree.InsertRange(Enumerable.Range(1, 100)); // Always balanced\n\n// Red-Black Tree - relaxed balance\nvar rbTree = new RedBlackTree\u003cint\u003e();\nrbTree.InsertRange(Enumerable.Range(1, 100)); // Balanced with different strategy\n```\n\n### B-Tree for Large Datasets\n```csharp\n// B-Tree with configurable degree for disk optimization\nvar bTree = new BTree\u003cint\u003e(5); // Degree 5 - each node can hold up to 4 keys\nbTree.InsertRange(Enumerable.Range(1, 1000));\n```\n\n### Advanced Traversals and Operations\n```csharp\nvar tree = new BinarySearchTree\u003cint\u003e();\ntree.InsertRange(new[] { 50, 30, 70, 20, 40, 60, 80 });\n\n// Different traversals\nvar inOrder = tree.InOrderTraversal();        // 20, 30, 40, 50, 60, 70, 80\nvar preOrder = tree.PreOrderTraversal();      // 50, 30, 20, 40, 70, 60, 80\nvar postOrder = tree.PostOrderTraversal();    // 20, 40, 30, 60, 80, 70, 50\nvar levelOrder = tree.LevelOrderTraversal();  // 50, 30, 70, 20, 40, 60, 80\nvar reverseInOrder = tree.ReverseInOrderTraversal(); // 80, 70, 60, 50, 40, 30, 20\n\n// Advanced operations\nvar min = tree.GetMin();                    // 20\nvar max = tree.GetMax();                    // 80\nvar thirdSmallest = tree.GetKthSmallest(3); // 40\nvar secondLargest = tree.GetKthLargest(2);  // 70\n```\n\n## Testing\n\nThe library includes comprehensive unit tests:\n\n```bash\ndotnet test tests/TreeDataStructure.Tests/TreeDataStructure.Tests.csproj\n```\n\nTests cover:\n- Basic operations for all tree types\n- Edge cases and boundary conditions\n- Performance validation\n- Correctness of advanced operations\n- Comparison between different tree implementations\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\nPlease ensure:\n- All tests pass\n- Code follows existing style\n- New functionality is well-documented\n- Performance considerations are addressed\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmreshboboyev%2Ftree-data-structure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmreshboboyev%2Ftree-data-structure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmreshboboyev%2Ftree-data-structure/lists"}