#include <iostream>
struct Node {
int data;
Node* left;
Node* right;
Node(int value) {
data = value;
left = right = nullptr;
}
};
class BinaryTree {
public:
Node* root;
BinaryTree() {
root = nullptr;
}
void Insert(int value) {
root = insertValue(root, value);
}
void Print() {
printNodes(root);
}
private:
Node* insertValue(Node* node, int value) {
if (node == nullptr) {
return new Node(value);
}
if (value < node->data) {
node->left = insertValue(node->left, value);
} else if (value > node->data) {
node->right = insertValue(node->right, value);
}
return node;
}
void printNodes(Node* node) {
if (node != nullptr) {
printNodes(node->left);
std::cout << node->data << " ";
printNodes(node->right);
}
}
};
int main() {
BinaryTree btree;
btree.Insert(70);
btree.Insert(30);
btree.Insert(20);
btree.Insert(40);
btree.Insert(60);
btree.Insert(80);
btree.Insert(90);
btree.Insert(10);
std::cout << "Tree values: ";
btree.Print();
}
/*
run:
Tree values: 10 20 30 40 60 70 80 90
*/