0% encontró este documento útil (0 votos)
31 vistas5 páginas

Implementación de Árbol Binario en C++

El documento presenta una implementación de un árbol binario de búsqueda en C++, incluyendo clases para nodos y el árbol, así como métodos para insertar, eliminar y recorrer los nodos en orden. También incluye un menú interactivo para permitir al usuario realizar operaciones sobre el árbol. Se inicializa el árbol con un conjunto de valores y se proporciona funcionalidad para verificar si el árbol está vacío.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas5 páginas

Implementación de Árbol Binario en C++

El documento presenta una implementación de un árbol binario de búsqueda en C++, incluyendo clases para nodos y el árbol, así como métodos para insertar, eliminar y recorrer los nodos en orden. También incluye un menú interactivo para permitir al usuario realizar operaciones sobre el árbol. Se inicializa el árbol con un conjunto de valores y se proporciona funcionalidad para verificar si el árbol está vacío.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Tarea – Davinia Nuñez

#include <iostream>

#include <string>

typedef int Tipoelemento;

class Nodo {

public:

Tipoelemento dato;

Nodo* izdo;

Nodo* dcho;

Nodo(Tipoelemento valor) : dato(valor), izdo(nullptr), dcho(nullptr) {}

};

class ArbolBinarioBusqueda {

private:

Nodo* raiz;

public:

ArbolBinarioBusqueda() : raiz(nullptr) {}

void insertar(Tipoelemento valor) {

raiz = insertarRec(raiz, valor);

void eliminar(Tipoelemento valor) {

raiz = eliminarRec(raiz, valor);

}
void inorden() {

inordenRec(raiz);

std::cout << std::endl;

bool esVacio() { return raiz == nullptr; }

Nodo* obtenerRaiz() { return raiz; }

private:

Nodo* insertarRec(Nodo* nodo, Tipoelemento valor) {

if (nodo == nullptr) {

return new Nodo(valor);

if (valor < nodo->dato) {

nodo->izdo = insertarRec(nodo->izdo, valor);

} else if (valor > nodo->dato) {

nodo->dcho = insertarRec(nodo->dcho, valor);

return nodo;

Nodo* encontrarMinimo(Nodo* nodo) {

while (nodo->izdo) {

nodo = nodo->izdo;

return nodo;

}
Nodo* eliminarRec(Nodo* nodo, Tipoelemento valor) {

if (!nodo) return nodo;

if (valor < nodo->dato) {

nodo->izdo = eliminarRec(nodo->izdo, valor);

} else if (valor > nodo->dato) {

nodo->dcho = eliminarRec(nodo->dcho, valor);

} else {

if (!nodo->izdo) {

Nodo* temp = nodo->dcho;

delete nodo;

return temp;

} else if (!nodo->dcho) {

Nodo* temp = nodo->izdo;

delete nodo;

return temp;

Nodo* temp = encontrarMinimo(nodo->dcho);

nodo->dato = temp->dato;

nodo->dcho = eliminarRec(nodo->dcho, temp->dato);

return nodo;

void inordenRec(Nodo* nodo) {

if (nodo) {

inordenRec(nodo->izdo);

std::cout << nodo->dato << " ";

inordenRec(nodo->dcho);
}

};

void menu() {

std::cout << "\n\tTRABAJANDO CON ARBOLES DE BUSQUEDA:\n\n";

std::cout << "1.- Insertar nodo en el arbol" << std::endl;

std::cout << "2.- Recorrido en inorden" << std::endl;

std::cout << "3.- Eliminar nodo" << std::endl;

std::cout << "4.- Esta vacio el arbol?" << std::endl;

std::cout << "0.- Salir" << std::endl;

std::cout << "\n INGRESE OPCION: ";

int main() {

ArbolBinarioBusqueda arbol;

int op, valor;

int valores[] = {51, 36, 159, 89, 142, 108, 25, 177, 78, 157, 3, 178, 28,
150, 179, 164, 71, 169, 113, 81};

for (int v : valores) {

[Link](v);

std::cout << "Validando recorrido inorden: ";

[Link]();

std::cout << std::endl;

do {
menu();

std::cin >> op;

switch (op) {

case 1:

std::cout << "Ingrese valor del nodo: ";

std::cin >> valor;

[Link](valor);

break;

case 2:

std::cout << "Recorrido en inorden: ";

[Link]();

break;

case 3:

std::cout << "Ingrese valor del nodo a eliminar: ";

std::cin >> valor;

[Link](valor);

break;

case 4:

std::cout << ([Link]() ? "El arbol esta vacio" : "El arbol no


esta vacio") << std::endl;

break;

} while (op != 0);

return 0;

También podría gustarte