Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork5.7k
feat: add preOrder algorithm for tree data structure. test: add testc…#1323
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
…ases for preOrder algortihm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Implementation looks fine, apart from the fact that it has quadratic time complexity due to the constant array copying. Either fix this or add a big fat warning; I'd expect a pre-order traversal to have linear time complexity. Ideally you would use agenerator instead of pushing to a list IMO.
The tests seem somewhat excessive for such a simple function (my rule of thumb roughly is 1:1 implementation to tests, 1:2 or 1:3 at most). You could also greatly shorten the tests by writing a utility constructor - something likeconst T = (left, value, right) => {left: left, value: value, right: right}
.
I also think we should start consolidating (binary) tree algorithms in a (binary= tree class. A class would be a good idea to document the expected tree format and to group together related binary tree algorithms, including postorder and inorder traversal.
Finally, this is missing a doc comment; generally that would be fine for such a simple function ("self-documenting"), but I think that at least the tree format should be documented here.
You are probably right, implementing all the methods in a tree class will be better. I am totally new to contributing to open source, so I am still learning about good test cases, I have one doubt one method is missing from the tree that is tree mirroring, I was thinking about doing that, so should it be a separate algorithm like in the python one or should I just update the tree file. |
You should group algorithms working on the same tree structure in the same tree class. I assume you're going to implement a |
Yeah I think there's only a BST class, not binary tree, so I can implement binary tree and implement some of the methods, I'll work on that then! |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
…ases for preOrder algortihm
Describe your change:
Checklist:
Example:
UserProfile.js
is allowed butuserprofile.js
,Userprofile.js
,user-Profile.js
,userProfile.js
are notFixes: #{$ISSUE_NO}
.