Вот реализация двоичного дерева на C++:
#include <iostream>
struct Node {
int data;
Node* left;
Node* right;
Node(int value) {
data = value;
left = nullptr;
right = nullptr;
}
};
class BinaryTree {
private:
Node* root;
public:
BinaryTree() {
root = nullptr;
}
void insert(int value) {
root = insertRecursive(root, value);
}
Node* insertRecursive(Node* currentNode, int value) {
if (currentNode == nullptr) {
return new Node(value);
}
if (value < currentNode->data) {
currentNode->left = insertRecursive(currentNode->left, value);
} else if (value > currentNode->data) {
currentNode->right = insertRecursive(currentNode->right, value);
}
return currentNode;
}
void printInOrder() {
printInOrderRecursive(root);
std::cout << std::endl;
}
void printInOrderRecursive(Node* currentNode) {
if (currentNode != nullptr) {
printInOrderRecursive(currentNode->left);
std::cout << currentNode->data << " ";
printInOrderRecursive(currentNode->right);
}
}
};
int main() {
BinaryTree tree;
// Inserting elements into the binary tree
tree.insert(5);
tree.insert(3);
tree.insert(7);
tree.insert(1);
tree.insert(4);
// Printing the elements in the binary tree in order
std::cout << "In-order traversal: ";
tree.printInOrder();
return 0;
}
Эта реализация включает структуру Node
для представления каждого узла в двоичном дереве и класс BinaryTree
для обработки операций с деревом. Метод insert
позволяет вставлять элементы в дерево, а метод printInOrder
выполняет обход дерева по порядку и печатает элементы.