Los árboles binarios son una estructura de datos utilizada en la programación para almacenar y acceder a una colección de elementos de manera organizada. Cada elemento del árbol se conoce como un nodo y puede tener hasta dos hijos, lo que lo convierte en una estructura jerárquica.

A continuación se presentan algunas de las principales operaciones que se pueden realizar con árboles binarios:
Para insertar un elemento en un árbol binario, debes seguir los siguientes pasos:
- class BinaryTree {
- private:
- struct TreeNode {
- int data;
- TreeNode* left;
- TreeNode* right;
- };
- TreeNode* root;
- void insert(TreeNode*&, int);
- public:
- BinaryTree() { root = NULL; }
- void insert(int data) { insert(root, data); }
- };
- void BinaryTree::insert(TreeNode*& node, int data) {
- if (node == NULL) {
- node = new TreeNode;
- node->data = data;
- node->left = node->right = NULL;
- }
- else if (data < node->data) {
- insert(node->left, data);
- }
- else {
- insert(node->right, data);
- }
- }
Para eliminar un elemento de un árbol binario, debes seguir los siguientes pasos:
- class BinaryTree {
- private:
- struct TreeNode {
- int data;
- TreeNode* left;
- TreeNode* right;
- };
- TreeNode* root;
- void remove(TreeNode*&, int);
- public:
- BinaryTree() { root = NULL; }
- void remove(int data) { remove(root, data); }
- };
- void BinaryTree::remove(TreeNode*& node, int data) {
- if (node == NULL) {
- return;
- }
- if (data < node->data) {
- remove(node->left, data);
- }
- else if (data > node->data) {
- remove(node->right, data);
- }
- else {
- if (node->left == NULL && node->right == NULL) {
- delete node;
- node = NULL;
- }
- else if (node->left == NULL) {
- TreeNode* temp = node;
- node = node->right;
- delete temp;
- }
- else if (node->right == NULL) {
- TreeNode* temp = node;
- node = node->left;
- delete temp;
- }
- else {
- TreeNode* temp = node->right;
- while (temp->left != NULL) {
- temp = temp->left;
- }
- node->data = temp->data;
- remove(node->right, temp->data);
- }
- }
- }
Para buscar un elemento en un árbol binario, debes seguir los siguientes pasos:
- class BinaryTree {
- private:
- struct TreeNode {
- int data;
- TreeNode* left;
- TreeNode* right;
- };
- TreeNode* root;
- bool search(TreeNode*, int);
- public:
- BinaryTree() { root = NULL; }
- bool search(int data) { return search(root, data); }
- };
- bool BinaryTree::search(TreeNode* node, int data) {
- if (node == NULL) {
- return false;
- }
- if (node->data == data) {
- return true;
- }
- if (data < node->data) {
- return search(node->left, data);
- }
- else {
- return search(node->right, data);
- }
- }
Link de apoyo
Siguiente tema:
Árboles Binarios: otras operaciones >>