Implement size-based method to distinguish child tree from thread in AVL balanced trees #498
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎯 Summary
This PR implements a different approach to distinguish between child tree and thread relationships in AVL balanced trees, as requested in issue #86.
🔄 Changes Made
Instead of using bitwise operations on packed values, the new implementation uses size comparison which is more intuitive and aligns with the natural properties of AVL trees where a parent's subtree size is always larger than its children's subtree sizes.
Key Changes:
Added new methods in
LinksAvlBalancedTreeMethodsBase.cs:GetLeftIsChildBySizeComparison(TLinkAddress node)GetRightIsChildBySizeComparison(TLinkAddress node)Modified concrete implementations to use size-based comparison:
LinksTargetsAvlBalancedTreeMethods.cs- UpdatedGetLeftIsChildandGetRightIsChildmethodsLinksSourcesAvlBalancedTreeMethods.cs- UpdatedGetLeftIsChildandGetRightIsChildmethodsImplementation Logic:
The new approach uses the following logic:
This replaces the previous bitwise operations:
✅ Testing
💡 Benefits
🔗 Related
🤖 Generated with Claude Code