From e7aaed86969573965ed4201e881aa61a86df50f4 Mon Sep 17 00:00:00 2001 From: aish505 Date: Sat, 1 Nov 2025 00:01:47 +0530 Subject: [PATCH 1/2] Add: Recursive Inorder Traversal in C++ --- Cpp_Tree_Traversals/recursive_inorder.cpp | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Cpp_Tree_Traversals/recursive_inorder.cpp diff --git a/Cpp_Tree_Traversals/recursive_inorder.cpp b/Cpp_Tree_Traversals/recursive_inorder.cpp new file mode 100644 index 0000000..b1e4417 --- /dev/null +++ b/Cpp_Tree_Traversals/recursive_inorder.cpp @@ -0,0 +1,31 @@ + +#include +using namespace std; + +struct Node { + int data; + Node* left; + Node* right; + Node(int val) : data(val), left(nullptr), right(nullptr) {} +}; + +void inorder(Node* root) { + if (!root) return; + inorder(root->left); + cout << root->data << " "; + inorder(root->right); +} + +int main() { + // sample tree + 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); + + cout << "Inorder Traversal: "; + inorder(root); + cout << endl; + return 0; +} From 0d74d544024e3d14d1cf2fe0b76b4c299f5146b0 Mon Sep 17 00:00:00 2001 From: aish505 Date: Sat, 1 Nov 2025 00:46:21 +0530 Subject: [PATCH 2/2] Add: Iterative (stack) Preorder Traversal in C++ --- Cpp_Tree_Traversals/stack_preorder.cpp | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Cpp_Tree_Traversals/stack_preorder.cpp diff --git a/Cpp_Tree_Traversals/stack_preorder.cpp b/Cpp_Tree_Traversals/stack_preorder.cpp new file mode 100644 index 0000000..b778318 --- /dev/null +++ b/Cpp_Tree_Traversals/stack_preorder.cpp @@ -0,0 +1,38 @@ + +#include +using namespace std; + +struct Node { + int data; + Node* left; + Node* right; + Node(int val): data(val), left(nullptr), right(nullptr) {} +}; + +vector iterative_preorder(Node* root) { + vector res; + if (!root) return res; + stack st; + st.push(root); + while (!st.empty()) { + Node* node = st.top(); st.pop(); + res.push_back(node->data); + if (node->right) st.push(node->right); + if (node->left) st.push(node->left); + } + return res; +} + +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); + + auto ans = iterative_preorder(root); + cout << "Iterative Preorder: "; + for (int v : ans) cout << v << " "; + cout << endl; + return 0; +}