{"id":18576396,"url":"https://github.com/r-papso/data-structures","last_synced_at":"2026-06-16T16:31:32.986Z","repository":{"id":54987033,"uuid":"306826650","full_name":"r-papso/data-structures","owner":"r-papso","description":"Implementation of advanced data structures","archived":false,"fork":false,"pushed_at":"2021-12-30T20:41:54.000Z","size":179,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-28T06:22:26.813Z","etag":null,"topics":["avl-tree","csharp","data-structures","hashing-algorithms","kd-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/r-papso.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}},"created_at":"2020-10-24T07:08:37.000Z","updated_at":"2023-06-12T06:20:49.000Z","dependencies_parsed_at":"2022-08-14T08:11:04.110Z","dependency_job_id":null,"html_url":"https://github.com/r-papso/data-structures","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/r-papso/data-structures","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-papso%2Fdata-structures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-papso%2Fdata-structures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-papso%2Fdata-structures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-papso%2Fdata-structures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r-papso","download_url":"https://codeload.github.com/r-papso/data-structures/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-papso%2Fdata-structures/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34415240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["avl-tree","csharp","data-structures","hashing-algorithms","kd-tree"],"created_at":"2024-11-06T23:24:49.714Z","updated_at":"2026-06-16T16:31:32.967Z","avatar_url":"https://github.com/r-papso.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DataStructures\n\nImplementation of advanced data structures. Project contains K-d tree, AVL tree, HashSet and ExtendibleHashing structures. The project has been created as a part of course [Algorithms and Data structures 2 (5II215)](https://vzdelavanie.uniza.sk/vzdelavanie/planinfo.php?kod=275016\u0026lng=en) taught at Faculty of Management Science and Informatics, University of Žilina. \n\n## Structures\n\nClass library containing implementation of aforementioned data structures. Individual structures can be obtained from this library through [StructureFactory](./Structures/StructureFactory.cs) class.\n\n```C#\nusing Structures;\n\nclass StructureExample\n{\n    static void Main(string[] args)\n    {\n        // Obtaining AVL tree from StructureFactory.\n        var avlTree = StructureFactory.Instance.GetAvlTree\u003cint\u003e();\n    }\n}\n```\n    \n### [AvlTree](./Structures/Tree/AvlTree.cs)\nImplementation of [AVL tree](https://en.wikipedia.org/wiki/AVL_tree). Objects stored at this structure must implement [IComparable](https://docs.microsoft.com/en-us/dotnet/api/system.icomparable?view=net-5.0) interface. Structure does not support duplicate keys and is ordered by the keys in ascending order. Time complexity of **Search, Insert and Delete** operations are **O(log\u003csub\u003e2\u003c/sub\u003en)**. Finding minimum and maximum through Min and Max properties has the same time complexity as well. **Range search** time complexity is **O(log\u003csub\u003e2\u003c/sub\u003en + m)** where m is number of found elements.\n\n### [KdTree](./Structures/Tree/KdTree.cs)\n\nImplementation of [K-d tree](https://en.wikipedia.org/wiki/K-d_tree). This structure contains objects with multiple secondary (non-unique) keys. Objects stored at this structure must implement [IKdComparable](./Structures/Interface/IKdComparable.cs) interface. Structure does not necessarily stores objects in ascending order due to multidimensionality. Time complexity of **Search, Insert and Delete** operations are **O(log\u003csub\u003e2\u003c/sub\u003en)**. **Range search** time complexity is **[O(k * n\u003csup\u003e1 - 1/k\u003c/sup\u003e)](https://link.springer.com/article/10.1007/BF00263763)** where k is number of K-d tree dimensions.\n\n### [HashSet](./Structures/Hashing/HashSet.cs)\n\nImplementation of [Hash table](https://en.wikipedia.org/wiki/Hash_table). Objects stored at the structure should override Equals and GetHashCode method if necessary. **Search, Insert and Delete** time complexities are **O(1)**.\n\n### [ExtendibleHashing](./Structures/Hashing/ExtendibleHashing.cs)\n\nImplementation of [Extendible hashing](https://en.wikipedia.org/wiki/Extendible_hashing). Objects stored at the structure should override Equals and GetHashCode method if necessary. Objects stored in this structure must implement [ISerializable](./Structures/Interface/ISerializable.cs) interface. Purpose of this structure is to minimize number of file accesses during Search, Insert and Delete operations. File accesses during all these operations are constant.\n    \n## StructureTests\n\nXUnit test project used to test functionality of each of the structures.\n\n## SurveyApp\n\nWPF application used to demonstrate functionality of the structures. It is a sample project consuming Structures class library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-papso%2Fdata-structures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr-papso%2Fdata-structures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-papso%2Fdata-structures/lists"}