/* En este ejemplo, la clase `BinaryTree` representa un árbol binario donde cada nodo tiene un valor entero y puede tener hasta dos hijos (izquierdo y derecho). La función `insert` agrega nuevos valores al árbol de manera ordenada, asegurando que los nodos se inserten en el lugar correcto según su valor. El método `inorderTraversal` realiza un recorrido en orden del árbol, visitando primero la subárbol izquierdo, luego la raíz y finalmente la subárbol derecho. */ #include using namespace std; // Definición del nodo del árbol struct Node { int data; Node* left; Node* right; // Constructor para facilitar la creación de nodos Node(int val) : data(val), left(nullptr), right(nullptr) {} }; // Clase del árbol binario class BinaryTree { public: Node* root; // Constructor BinaryTree() : root(nullptr) {} // Función para insertar un valor en el árbol void insert(int val) { if (root == nullptr) { root = new Node(val); } else { insertHelper(root, val); } } // Función auxiliar para insertar un valor en el árbol de manera recursiva void insertHelper(Node* node, int val) { if (val < node->data) { if (node->left == nullptr) { node->left = new Node(val); } else { insertHelper(node->left, val); } } else { if (node->right == nullptr) { node->right = new Node(val); } else { insertHelper(node->right, val); } } } // Función para realizar un recorrido en orden del árbol void inorderTraversal() { inorderTraversalHelper(root); cout << endl; } // Función auxiliar para el recorrido en orden recursivo void inorderTraversalHelper(Node* node) { if (node != nullptr) { inorderTraversalHelper(node->left); cout << node->data << " "; inorderTraversalHelper(node->right); } } }; int main() { BinaryTree tree; tree.insert(5); tree.insert(3); tree.insert(7); tree.insert(2); tree.insert(4); tree.insert(6); tree.insert(8); cout << "Recorrido en orden del árbol: "; tree.inorderTraversal(); return 0; }