algorithm: Iterative (and in-place) BFS for binary trees#1102
Merged
raklaptudirm merged 7 commits intoTheAlgorithms:masterfrom Sep 22, 2022
Merged
algorithm: Iterative (and in-place) BFS for binary trees#1102raklaptudirm merged 7 commits intoTheAlgorithms:masterfrom
raklaptudirm merged 7 commits intoTheAlgorithms:masterfrom
Conversation
The original insertBalance function was doing raw value comparisons as opposed to using the tree's comparator. This is clearly unintentional, and would (ultimately) cause the structure to segfault when constructed with the stringData included in the updated test. I've added the fix, scanned the rest of the code for similar issues, and added the appropriate test case which passes successfully with the fix. The jest code coverage increases slightly as well with the changes.
Added a couple of extra elements to the original test tree, and then removed elements in an order such that all previously uncovered branches of code are now covered. Also added an emptyTree structure to test some additional (trivial) base cases.
missed this from my previous commit
An iterative analog to the traditional recursive breadth-first-search algorithm for binary trees. This in-place solution uses the pre-existing "traversal" array for both tracking the algorithm as well as storing the result. Also tweaked old code by resetting the traversal array each time the tree is traversed (otherwise you're only allowed to traverse a tree once which doesn't seem correct even with a single traversal function).
appgurueu
reviewed
Sep 17, 2022
appgurueu
reviewed
Sep 17, 2022
appgurueu
reviewed
Sep 17, 2022
appgurueu
reviewed
Sep 17, 2022
Collaborator
appgurueu
left a comment
There was a problem hiding this comment.
The algorithm is fine but inherits some poor code quality.
got rid of unnecessary currentSize added currentNode for clarity
appgurueu
approved these changes
Sep 19, 2022
Collaborator
appgurueu
left a comment
There was a problem hiding this comment.
Looks good, can be iterated upon as you said.
Member
|
@appgurueu All the conversations are resolved I suppose? |
Collaborator
Yes. It's minor enough to be postponed. |
Contributor
Author
@appgurueu Appreciate the review! @raklaptudirm Good to merge now? |
raklaptudirm
approved these changes
Sep 22, 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Wrote a similar version of this to help visualize some of the testing I had done recently with the AVLTree.
It's helpful for folks to know that recursion isn't the end-all-be-all solution for tree-based problems. Recursive solutions are great for academia, but depending on the type of commercial development they'll be doing recursion may not always be an acceptable option.
Describe your change:
Checklist:
Example:
UserProfile.jsis allowed butuserprofile.js,Userprofile.js,user-Profile.js,userProfile.jsare notFixes: #{$ISSUE_NO}.