My Optimal Solution for Equivalent Binary Trees #1
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.
Hey there,
I've been working on the "Equivalent Binary Trees" problem and took a look at the Same function. The original approach works, but I noticed a small potential issue: if the trees aren't the same and Same returns false early, the Walk goroutines might get stuck trying to send values to channels that Same is no longer listening to. This could lead to goroutine leaks.
My change addresses this by using buffered channels in the Same function. Since we know tree.New(k) creates trees with 10 elements, I've set a buffer size of 10. This way, even if Same bails out early, the Walk goroutines can still send all their values to the buffer and complete their work, preventing them from hanging around.
The Walk function itself is pretty solid, so I kept that as is.
Let me know what you think!