Algoritmia - Arboles binarios de busqueda

 
Vista:

Arboles binarios de busqueda

Publicado por kno21 (1 intervención) el 29/12/2001 16:29:32
Yo tengo ya los algortimos mas comunes de los ABB (insercion, busqueda y borrado) pero si alguien tuviese algunos mas y me los pasase mejon q mejon!!!!
Salu2.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Algoritmos adicionales para árboles binarios de búsqueda (ABB)

Publicado por Alejandro (307 intervenciones) el 27/02/2024 23:11:52
¡Entiendo, Kno21! Aquí tienes algunos algoritmos adicionales que podrían ser útiles en el contexto de árboles binarios de búsqueda (ABB):

1. Recorrido en Inorden:
- Visita los nodos en el orden "izquierda - raíz - derecha".

1
2
3
4
5
6
7
void inorden(NodoABB* nodo) {
    if (nodo != NULL) {
        inorden(nodo->izquierda);
        printf("%d ", nodo->valor);
        inorden(nodo->derecha);
    }
}

2. Recorrido en preorden:
- Visita los nodos en el orden "raíz - izquierda - derecha".

1
2
3
4
5
6
7
void preorden(NodoABB* nodo) {
    if (nodo != NULL) {
        printf("%d ", nodo->valor);
        preorden(nodo->izquierda);
        preorden(nodo->derecha);
    }
}

3. Recorrido en postorden:
- Visita los nodos en el orden "izquierda - derecha - raíz".

1
2
3
4
5
6
7
void postorden(NodoABB* nodo) {
    if (nodo != NULL) {
        postorden(nodo->izquierda);
        postorden(nodo->derecha);
        printf("%d ", nodo->valor);
    }
}

4. Altura del árbol:
- Calcula la altura del árbol.

1
2
3
4
5
6
7
8
9
int alturaArbol(NodoABB* nodo) {
    if (nodo == NULL) {
        return -1; // Árbol vacío
    } else {
        int alturaIzq = alturaArbol(nodo->izquierda);
        int alturaDer = alturaArbol(nodo->derecha);
        return 1 + (alturaIzq > alturaDer ? alturaIzq : alturaDer);
    }
}

5. Número de nodos:
- Calcula el número total de nodos en el árbol.

1
2
3
4
5
6
7
int contarNodos(NodoABB* nodo) {
    if (nodo == NULL) {
        return 0;
    } else {
        return 1 + contarNodos(nodo->izquierda) + contarNodos(nodo->derecha);
    }
}

Estos son solo algunos ejemplos adicionales. Dependiendo de tus necesidades específicas, podrías explorar algoritmos para encontrar el mínimo/máximo, calcular el tamaño del subárbol, balancear el árbol, entre otros. Recuerda adaptarlos según tu implementación específica y el lenguaje de programación que estés utilizando. ¡Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar