-
Notifications
You must be signed in to change notification settings - Fork 0
/
arbol_binario_aux.hpp
87 lines (74 loc) · 2.37 KB
/
arbol_binario_aux.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
* Modulo: ArbolBinarioAux
* Descripción: Implementación de subprogramas auxiliares de manejo
* de Árboles Binarios.
*/
#ifndef ARBOL_BINARIO_AUX_HPP
#define ARBOL_BINARIO_AUX_HPP
#include <algorithm>
//namespace ed {
/**
* POST:
* resultado = 0 si esVacio(arbin)
* resultado = 1 + numNodos(hijoIzqdo(arbin)) +
* numNodos(hijoDcho(arbin)) e.o.c.
*/
template <typename ArbolBin>
int numNodos(ArbolBin arbin);
/**
* POST:
* resultado = 0 si esVacio(arbin)
* resultado = 1 si esVacio(HijoIzqdo(arbin)) AND EsArbolVacio(HijoDcho(arbin))
* resultado = NumHojas(HijoIzqdo(arbin)) + NumHojas(HijoDcho(arbin)) e.o.c. }
*/
template <typename ArbolBin>
int numHojas(ArbolBin arbin);
/**
* PRE: Queda suficiente espacio en memoria para copiar todos los
* elementos de 'arbin' en 'imagen'
* POST:
* CrearArbolVacio(imagen) si esVacio(arbin)
* Espejo(HijoIzqdo(arbin), imagen_hi)
* Espejo(HijoDcho(arbin), imagen_hd)
* Construir(imagen_hd, Raiz(arbin), imagen_hi, imagen) e.o.c.
* EXCEPCION: 'ArbolBinario::EMemoriaAgotada' si no queda memoria
*/
template <typename ArbolBin>
void espejo(ArbolBin arbin, ArbolBin& imagen);
/**
* POST:
* resultado = 0 si esVacio(arbin)
* resultado = 1 +
* Maximo(Profundidad(HijoIzqdo(arbin)), Profundidad(HijoDcho(arbin)) e.o.c.
*/
template <typename ArbolBin>
int profundidad(ArbolBin arbin);
/**
* POST:
* resultado = CIERTO si esVacio(arbin)
* resultado = NumNodos(HijoIzqdo(arbin))=NumNodos(HijoDcho(arbin)) e.o.c.
*/
template <typename ArbolBin>
bool compensado(ArbolBin arbin);
/**
* POST:
* resultado = 0 si eslVacio(arbin)
* resultado = 1 si Raiz(arbin)=e
* resultado = 1 + minimo (NivelElemento(e, HijoIzqdo(arbin)),
* NivelElemento(e, HijoDcho(arbin)))
*
* si NivelElemento(e, HijoIzqdo(arbin)) > 0 AND
* NivelElemento(e, HijoDcho(arbin)) > 0
*
* resultado = 0 si (NivelElemento(e, HijoIzqdo(arbin)) = 0 ^
* NivelElemento(e, HijoDcho(arbin)) = 0)
*
* resultado = 1 + maximo(NivelElemento(e, HijoIzqdo(arbin)),
* NivelElemento(e, HijoDcho(arbin)))
* e.o.c
*/
template <typename ArbolBin>
int nivelElemento(typename ArbolBin::Elemento e, ArbolBin arbin);
#include "arbol_binario_aux.cpp"
//} // namespace ed
#endif