recursive_tree_traversals {
90std::vector<std::uint64_t>
92std::vector<std::uint64_t>
94std::vector<std::uint64_t>
101std::vector<std::uint64_t> inorder(
104std::vector<std::uint64_t>
preorder(
121 node->left =
node->right =
nullptr;
132std::vector<std::uint64_t> BT::inorder(
Node*root) {
133 if(root ==
nullptr) {
138BT::inorder_result.push_back(
140inorder(root->right);
142 returninorder_result;
153 if(root ==
nullptr) {
157BT::preorder_result.push_back(
162 returnpreorder_result;
173 if(root ==
nullptr) {
179BT::postorder_result.push_back(
182 returnpostorder_result;
185voiddeleteAll(
const Node*
constroot) {
187deleteAll(root->left);
188deleteAll(root->right);
213std::vector<std::uint64_t> actual_result_inorder{2, 7, 5, 6, 11,
215std::vector<std::uint64_t> actual_result_preorder{2, 7, 2, 6, 5,
217std::vector<std::uint64_t> actual_result_postorder{2, 5, 11, 6, 7,
219std::vector<std::uint64_t>
222std::vector<std::uint64_t>
225std::vector<std::uint64_t>
229std::uint64_t size = actual_result_inorder.size();
233result_inorder = obj1.inorder(root);
234std::cout <<
"Testcase #1: Inorder Traversal...";
235 for(
autoi = 0; i < size; ++i) {
236assert(actual_result_inorder[i] == result_inorder[i]);
238std::cout <<
"Passed!"<< std::endl;
242result_preorder = obj1.
preorder(root);
243std::cout <<
"Testcase #1: Preorder Traversal...";
244 for(
autoi = 0; i < size; ++i) {
245assert(actual_result_preorder[i] == result_preorder[i]);
247std::cout <<
"Passed!"<< std::endl;
251result_postorder = obj1.
postorder(root);
252std::cout <<
"Testcase #1: Postorder Traversal...";
253 for(
autoi = 0; i < size; ++i) {
254assert(actual_result_postorder[i] == result_postorder[i]);
256std::cout <<
"Passed!"<< std::endl;
258std::cout << std::endl;
277std::vector<std::uint64_t> actual_result_inorder{4, 2, 1, 7, 5, 8, 3, 6};
278std::vector<std::uint64_t> actual_result_preorder{1, 2, 4, 3, 5, 7, 8, 6};
279std::vector<std::uint64_t> actual_result_postorder{4, 2, 7, 8, 5, 6, 3, 1};
280std::vector<std::uint64_t>
283std::vector<std::uint64_t>
286std::vector<std::uint64_t>
290std::uint64_t size = actual_result_inorder.size();
294result_inorder = obj2.inorder(root);
295std::cout <<
"Testcase #2: Inorder Traversal...";
296 for(
autoi = 0; i < size; ++i) {
297assert(actual_result_inorder[i] == result_inorder[i]);
299std::cout <<
"Passed!"<< std::endl;
303result_preorder = obj2.
preorder(root);
304std::cout <<
"Testcase #2: Preorder Traversal...";
305 for(
autoi = 0; i < size; ++i) {
306assert(actual_result_preorder[i] == result_preorder[i]);
308std::cout <<
"Passed!"<< std::endl;
312result_postorder = obj2.
postorder(root);
313std::cout <<
"Testcase #2: Postorder Traversal...";
314 for(
autoi = 0; i < size; ++i) {
315assert(actual_result_postorder[i] == result_postorder[i]);
317std::cout <<
"Passed!"<< std::endl;
319std::cout << std::endl;
335std::vector<std::uint64_t> actual_result_inorder{4, 2, 5, 1, 3};
336std::vector<std::uint64_t> actual_result_preorder{1, 2, 4, 5, 3};
337std::vector<std::uint64_t> actual_result_postorder{4, 5, 2, 3, 1};
338std::vector<std::uint64_t>
341std::vector<std::uint64_t>
344std::vector<std::uint64_t>
348std::uint64_t size = actual_result_inorder.size();
353result_inorder = obj3.inorder(root);
354std::cout <<
"Testcase #3: Inorder Traversal...";
355 for(
autoi = 0; i < size; ++i) {
356assert(actual_result_inorder[i] == result_inorder[i]);
358std::cout <<
"Passed!"<< std::endl;
362result_preorder = obj3.
preorder(root);
363std::cout <<
"Testcase #3: Preorder Traversal...";
364 for(
autoi = 0; i < size; ++i) {
365assert(actual_result_preorder[i] == result_preorder[i]);
367std::cout <<
"Passed!"<< std::endl;
371result_postorder = obj3.
postorder(root);
372std::cout <<
"Testcase #3: Postorder Traversal...";
373 for(
autoi = 0; i < size; ++i) {
374assert(actual_result_postorder[i] == result_postorder[i]);
376std::cout <<
"Passed!"<< std::endl;
378std::cout << std::endl;
387std::cout <<
"1st test-case"<< std::endl;
389std::cout <<
"2nd test-case"<< std::endl;
391std::cout <<
"3rd test-case"<< std::endl;
BT used to make the entire structure of the binary tree and the functions associated with the binary ...
std::vector< std::uint64_t > preorder(Node *)
preorder function that will perform the preorder traversal recursively, and return the resultant vect...
std::vector< std::uint64_t > postorder(Node *)
postorder function that will perform the postorder traversal recursively, and return the result vecto...
Node * createNewNode(std::uint64_t)
will allocate the memory for a node and, along the data and return the node.
void test2()
2nd test-case
void test1()
1st test-case
static void tests()
Self-test implementations.
void test3()
3rd test-case
int main()
Main function.
The structure to hold Nodes of the tree.
std::uint64_t data
The value/key of the node.
struct Node * left
struct pointer to left subtree.
struct Node * right
struct pointer to right subtree.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4