You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have added a check to prevent the scenario pointed out by your sample code, and the fix will be available in 0.8.3.
However, the possibility exists that a node which has already been added to the tree can get added again further down the hierarchy, and this is a somewhat different problem to solve. We could check every single addition against the tree, but this will be a big performance hit for large trees.
An alternative could be to maintain a registry of all known nodes (as a hash in the root), but this does require a good analysis of the code across multiple paths, as detaching sub-trees, or merging in new trees become considerably performance intensive, as the registry will need rebuilding in both scenarios.
The question is really about performance, and since RubyTree is meant for generic usage, it needs to be balanced appropriately.
Just try this code by mistake:
And it throw following exception:
As it try to output node in irb.
It maybe better to check the input data and prevent user to change node if they add children node that may cause loop.
The text was updated successfully, but these errors were encountered: