feat: add preOrder algorithm for tree data structure. test: add testc…#1323
feat: add preOrder algorithm for tree data structure. test: add testc…#1323Aryadev19 wants to merge 1 commit into
Conversation
…ases for preOrder algortihm
appgurueu
left a comment
There was a problem hiding this comment.
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 a generator 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 like const 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.jsis allowed butuserprofile.js,Userprofile.js,user-Profile.js,userProfile.jsare notFixes: #{$ISSUE_NO}.