From a4c29a4b5922a58415ea39af4ea0b5d6b6432458 Mon Sep 17 00:00:00 2001 From: Ritish Sehgal <59483233+apex-blaze@users.noreply.github.com> Date: Fri, 9 Apr 2021 18:22:11 +0530 Subject: [PATCH] Added 3 basic traversals in Binary Trees (#144) * added max subarray sum * added pre,in,post traversals * Update pre-in-post-traversal.cpp formatted the output * Update pre-in-post-traversal.cpp formatted output Co-authored-by: Arsenic <54987647+Arsenic-ATG@users.noreply.github.com> --- trees/README.md | 5 ++ trees/c-or-cpp/pre-in-post-traversal.cpp | 76 ++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 trees/README.md create mode 100644 trees/c-or-cpp/pre-in-post-traversal.cpp diff --git a/trees/README.md b/trees/README.md new file mode 100644 index 00000000..49a1f944 --- /dev/null +++ b/trees/README.md @@ -0,0 +1,5 @@ +# Trees + +### C or C++ + +1. [Pre, In & Post Order Traversals](c-or-cpp/pre-in-post-traversal.cpp) diff --git a/trees/c-or-cpp/pre-in-post-traversal.cpp b/trees/c-or-cpp/pre-in-post-traversal.cpp new file mode 100644 index 00000000..1d272b93 --- /dev/null +++ b/trees/c-or-cpp/pre-in-post-traversal.cpp @@ -0,0 +1,76 @@ +#include +#define endl "\n" +using namespace std; + + +// Basic Structure of a Tree +struct Node{ + int data; + struct Node *left; + struct Node *right; + + Node(int val){ + data = val; + left = NULL; + right = NULL; + } +}; + +/* Pre, In and Post order Traversal of a Binary Tree using recusrion */ +/* Complexity for each Traversal : O(n) */ + +// LST -> Left SubTree RST -> Right SubTree + +// Pre-Order goes like :- Root, LST, RST (Recursively) +void pre_order(struct Node* root){ + if(root == NULL) + return; + cout<data<<" "; + pre_order(root->left); + pre_order(root->right); +} + +// In-Order goes like :- LST, Root, RST (Recursively) +void in_order(struct Node* root){ + if(root == NULL) + return; + in_order(root->left); + cout<data<<" "; + in_order(root->right); +} + +// Pre-Order goes like :- LST, RST, Root (Recursively) +void post_order(struct Node* root){ + if(root == NULL) + return; + post_order(root->left); + post_order(root->right); + cout<data<<" "; +} + + +int main(){ + Node* root = new Node(1); + root->left = new Node(2); + root->right = new Node(3); + root->left->left = new Node(4); + root->left->right = new Node(5); + root->right->right = new Node(7); + + /* + 1 + / \ + 2 3 + / \ \ + 4 5 7 + Expected-> pre-order : 1,2,4,5,3,7 + in-order : 4,2,5,1,3,7 + post-order: 4,5,2,7,3,1 + + */ + cout<<"pre-order : "; pre_order(root); cout<