| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*
- 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 <iostream>
- 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;
- }
|