Coding Exercise: Inorder Tree Traversal Using Recursion
Traverse binary tree: Left subtree → Root → Right subtree.
Example: Tree(1,2,3) → Output: 2,1,3
Problem Statement
Input: Binary tree root
Output: Inorder traversal (vector or print)
Order: Left → Root → Right ✓
Binary Tree Node Class
C++
Tree node structure
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
Recursive Inorder Solution
C++
Complete inorder traversal
#include <iostream>
#include <vector>
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 == nullptr) return;
inorder(root->left);
cout << root->data << " ";
inorder(root->right);
}
int main() {
// Tree: 1
// / \
// 2 3
Node* root = new Node(1);
root->left = new Node(2);
root->right = new Node(3);
cout << "Inorder: ";
inorder(root); // 2 1 3
return 0;
}
Traversal Visualization
TEXT
Tree traversal path
Tree: 4
/ \
2 6
/ \ / \
1 3 5 7
Inorder: 1→2→3→4→5→6→7
Path: L→L→R→Root→L→R→Root
Test Cases
TEXT
Expected outputs
Tree(1,2,3) → 2 1 3
Tree(5,null,7) → 5 7
Single node → 10
Empty → (nothing)
Other Traversals (Bonus)
C++
Preorder and Postorder
void preorder(Node* root) { // Root L R
if (!root) return;
cout << root->data << " ";
preorder(root->left);
preorder(root->right);
}
void postorder(Node* root) { // L R Root
if (!root) return;
postorder(root->left);
postorder(root->right);
cout << root->data << " ";
}
Complexity
Time: O(n) - visit each node once
Space: O(h) - recursion stack (h=height)
Practice Variations
1. Preorder/postorder traversal
2. Level order (iterative)
3. Height of tree recursively
Conclusion
Mastered tree recursion! Inorder = sorted order for BST.
Next: Backtracking or graph DFS.
Codecrown