Skip to content

Add AVL Tree Implementation with Visualization Support #612

@ahamed-ali-git

Description

@ahamed-ali-git

Description:
I would like to contribute an AVL Tree implementation to PyDataStructs. After reviewing the existing codebase, I noticed that while there are several tree structures, a self-balancing AVL tree would be a valuable addition to the project.
Proposed Implementation:
Core Features:

AVLTree class with proper inheritance structure
Balanced insertion and deletion operations
Node balance factor tracking
Tree rotation mechanisms (single and double rotations)
Common tree traversal methods
Search functionality with O(log n) performance

Added Value:

Implementation will include detailed operation visualization hooks that align with the visualization resources mentioned in the README (visualgo.net and cs.usfca.edu)
Comprehensive test suite based on standard AVL tree edge cases
Performance benchmarks comparing with regular BST operations

Implementation Plan:

Study existing tree implementations in the codebase
Design the API to maintain consistency with other data structures
Implement core functionality with thorough documentation
Write tests based on examples from the OpenDataStructures book
Add visualization support
Benchmark against other tree implementations

Technical Considerations:

The implementation will follow the numpydoc style guide
Code will maintain the project's high test coverage standards
Will include both Python implementation and prepare for C++ backend support

I am familiar with the project's contribution guidelines and will follow the pull request policy. Looking forward to discussing this implementation further.

This refined proposal:

Shows you've reviewed the existing project
Adds visualization support (which aligns with their README references)
Demonstrates awareness of their documentation and testing standards
Provides a clear implementation plan
Mentions their C++ backend plans
Addresses their focus on consistent APIs

I would love to work on this! Please assign this issue to me.
@Kishan-Ved

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions