#include <iostream>
// Define the structure for a binary tree node
struct TreeNode {
int data;
TreeNode* left;
TreeNode* right;
// Constructor to initialize a new node with given data
TreeNode(int value) : data(value), left(nullptr), right(nullptr) {}
};
// Function to insert a new node into the binary tree
void insert(TreeNode*& root, int value) {
if (root == nullptr) {
root = new TreeNode(value);
return;
}
if (value < root->data) {
insert(root->left, value);
} else {
insert(root->right, value);
}
}
// Function to perform an in-order traversal of the binary tree
void inorderTraversal(TreeNode* root) {
if (root != nullptr) {
inorderTraversal(root->left);
std::cout << root->data << " ";
inorderTraversal(root->right);
}
}
int main() {
// Create an empty binary tree
TreeNode* root = nullptr;
// Insert elements into the binary tree
insert(root, 5);
insert(root, 3);
insert(root, 7);
insert(root, 2);
insert(root, 4);
// Perform in-order traversal and print the elements
std::cout << "In-order traversal: ";
inorderTraversal(root);
return 0;
}