Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tree configuration #138

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open

Tree configuration #138

wants to merge 21 commits into from

Conversation

hanish520
Copy link
Contributor

create trees from position slice

hanish520 and others added 5 commits December 21, 2024 23:48
We don't need an interface (yet), since there is only one
implementation. A client (user) of the package can easily add its
own interface as necessary.
This makes the test data specify the label: number to make it more
readable; it is hard to map the four numbers to the field name of
original createTreeTest type.
We only need to store the IDs once; the index into the ID slice
represents that ID's position in the tree. I think it will be faster
for small trees to do this approach; we may consider to add a
benchmark to find the breaking point where it is faster to use a
map for this. If a map is needed for larger trees for speed, we
could consider to revert this change, or allocate the map only if
the tree is actually large.
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
trees/treeconfig.go Outdated Show resolved Hide resolved
hanish520 and others added 16 commits December 23, 2024 00:21
This moves the code to compute the height together rather than
splitting it with code for argument checks.

This makes it easier to see that computing the height could be moved
to a external function if it was ever necessary to do separately.
In Go we try to avoid using the Get prefix.
We don't need to check that t.id's position isn't -1 since we do
that check in CreateTree, so we would never get -1 here.
NodeChildren returns this tree's replica's children, while the
ChildrenOf(node) returns the node's children.

This also removes an unnecessary allocation; we can return nil
instead of an empty slice of IDs.
NodeHeight returns the height of this tree's replica's height.
We can return a subsclice of the original to avoid allocating.
The math.Pow calls in a loop can be slow; this should be faster.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants