main.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. En este ejemplo, la clase `BinaryTree` representa un árbol binario donde cada nodo tiene un valor entero y puede
  3. tener hasta dos hijos (izquierdo y derecho). La función `insert` agrega nuevos valores al árbol de manera
  4. ordenada, asegurando que los nodos se inserten en el lugar correcto según su valor. El método `inorderTraversal`
  5. realiza un recorrido en orden del árbol, visitando primero la subárbol izquierdo, luego la raíz y finalmente la
  6. subárbol derecho.
  7. */
  8. #include <iostream>
  9. using namespace std;
  10. // Definición del nodo del árbol
  11. struct Node {
  12. int data;
  13. Node* left;
  14. Node* right;
  15. // Constructor para facilitar la creación de nodos
  16. Node(int val) : data(val), left(nullptr), right(nullptr) {}
  17. };
  18. // Clase del árbol binario
  19. class BinaryTree {
  20. public:
  21. Node* root;
  22. // Constructor
  23. BinaryTree() : root(nullptr) {}
  24. // Función para insertar un valor en el árbol
  25. void insert(int val) {
  26. if (root == nullptr) {
  27. root = new Node(val);
  28. } else {
  29. insertHelper(root, val);
  30. }
  31. }
  32. // Función auxiliar para insertar un valor en el árbol de manera recursiva
  33. void insertHelper(Node* node, int val) {
  34. if (val < node->data) {
  35. if (node->left == nullptr) {
  36. node->left = new Node(val);
  37. } else {
  38. insertHelper(node->left, val);
  39. }
  40. } else {
  41. if (node->right == nullptr) {
  42. node->right = new Node(val);
  43. } else {
  44. insertHelper(node->right, val);
  45. }
  46. }
  47. }
  48. // Función para realizar un recorrido en orden del árbol
  49. void inorderTraversal() {
  50. inorderTraversalHelper(root);
  51. cout << endl;
  52. }
  53. // Función auxiliar para el recorrido en orden recursivo
  54. void inorderTraversalHelper(Node* node) {
  55. if (node != nullptr) {
  56. inorderTraversalHelper(node->left);
  57. cout << node->data << " ";
  58. inorderTraversalHelper(node->right);
  59. }
  60. }
  61. };
  62. int main() {
  63. BinaryTree tree;
  64. tree.insert(5);
  65. tree.insert(3);
  66. tree.insert(7);
  67. tree.insert(2);
  68. tree.insert(4);
  69. tree.insert(6);
  70. tree.insert(8);
  71. cout << "Recorrido en orden del árbol: ";
  72. tree.inorderTraversal();
  73. return 0;
  74. }