From 14490ebcee47222ba08460258b9d1f7e78e7eb10 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 10 Oct 2021 13:11:15 +0530 Subject: [PATCH 1/3] Added inOrderTraversal using iterative approach --- .../Tree/inOrderTraversalIterative.cpp | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 C++/DataStructure/Tree/inOrderTraversalIterative.cpp diff --git a/C++/DataStructure/Tree/inOrderTraversalIterative.cpp b/C++/DataStructure/Tree/inOrderTraversalIterative.cpp new file mode 100644 index 0000000..191d2eb --- /dev/null +++ b/C++/DataStructure/Tree/inOrderTraversalIterative.cpp @@ -0,0 +1,63 @@ +/* + Author : Vishal Ambavade + Date : Date format 10/10/2021 + Description : C++ program to print inorder traversal of tree using iterative approach. +*/ + +#include +// Using stack +#include + +using namespace std; + +struct Node { + int data; + struct Node* left; + struct Node* right; + + Node(int data) { + this -> data = data; + left = right = NULL; + } +}; + +// Iterative function for inorder traversal of a tree +void inOrderTraversal(struct Node* root) { + stack st; + Node* current = root; + + while (current != NULL || st.empty() == false) { + //Go to the left most node of a tree + while (current != NULL) { + st.push(current); + current = current -> left; + } + + current = st.top(); + st.pop(); + + cout << current -> data << " "; + + current = current -> right; + } +} + +int main() { + struct Node* root = new Node(12); + root -> left = new Node(56); + root -> right = new Node(67); + root -> left -> left = new Node(23); + root -> left -> right = new Node(78); + root -> right -> left = new Node(32); + + /* Counstructed binary tree: + 12 + / \ + 56 67 + / \ / + 23 78 32 + */ + + inOrderTraversal(root); + return 0; +} \ No newline at end of file From f54eb1e306d6c15e1a0c6e0e66728bb54468700b Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 10 Oct 2021 13:12:36 +0530 Subject: [PATCH 2/3] Added inOrderTraversalIterative --- C++/DataStructure/Tree/inOrderTraversalIterative.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C++/DataStructure/Tree/inOrderTraversalIterative.cpp b/C++/DataStructure/Tree/inOrderTraversalIterative.cpp index 191d2eb..1f521dd 100644 --- a/C++/DataStructure/Tree/inOrderTraversalIterative.cpp +++ b/C++/DataStructure/Tree/inOrderTraversalIterative.cpp @@ -60,4 +60,4 @@ int main() { inOrderTraversal(root); return 0; -} \ No newline at end of file +} From becdf371aa903182576a3f832f7ecc6d8673f9af Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 11 Oct 2021 13:46:03 +0530 Subject: [PATCH 3/3] Added time and space complexity --- C++/DataStructure/Tree/inOrderTraversalIterative.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/C++/DataStructure/Tree/inOrderTraversalIterative.cpp b/C++/DataStructure/Tree/inOrderTraversalIterative.cpp index 1f521dd..43e6747 100644 --- a/C++/DataStructure/Tree/inOrderTraversalIterative.cpp +++ b/C++/DataStructure/Tree/inOrderTraversalIterative.cpp @@ -2,6 +2,9 @@ Author : Vishal Ambavade Date : Date format 10/10/2021 Description : C++ program to print inorder traversal of tree using iterative approach. + Time Complexity: O(n) + Space Complexity: O(n) + where n is the number of nodes in a binary tree */ #include