-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtavlcalendario.h
107 lines (85 loc) · 2.93 KB
/
tavlcalendario.h
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#ifndef _TAVLCALENDARIO_
#define _TAVLCALENDARIO_
#include <iostream>
#include "tcalendario.h"
#include "tvectorcalendario.h"
class TNodoAVL;
class TAVLCalendario{
//Salida
friend std::ostream& operator<<(std::ostream&, const TAVLCalendario&);
private:
TNodoAVL* raiz;
//Aux de "Preorden()"
void PreordenAux(TVectorCalendario&, int& i) const;
//Aux de "Inorden()"
void InordenAux(TVectorCalendario&, int& i) const;
//Aux de "Postorden()"
void PostordenAux(TVectorCalendario&, int& i) const;
//Aux de "Insertar()"
bool InsertarAux(const TCalendario&, bool& crece);
//Aux de "Borrar()"
bool BorrarAux(const TCalendario&, bool& crece);
//Equilibrar por rotacion a la izquierda
void EquilibrarIz(bool permitir_doble, bool from_borrar);
//Equilibrar por rotacion a la derecha
void EquilibrarDe(bool permitir_doble, bool from_borrar);
public:
//Constructor por defecto
TAVLCalendario();
//Constructor de copia
TAVLCalendario(const TAVLCalendario&);
//Asignacion
TAVLCalendario& operator=(const TAVLCalendario&);
//Destructor
~TAVLCalendario();
//Incrementar
TAVLCalendario operator+(const TAVLCalendario&) const;
//Decrementar
TAVLCalendario operator-(const TAVLCalendario&) const;
//Igualdad
bool operator==(const TAVLCalendario&) const;
//Desigualdad
bool operator!=(const TAVLCalendario&) const;
//Altura
int Altura() const;
//Numero de nodos
int Nodos() const;
//Numero de hojas
int NodosHoja() const;
//Si ningun calendario existe
bool EsVacio() const;
//Si esta ese calendario
bool Buscar(const TCalendario&) const;
//Return raiz
TCalendario Raiz() const;
//Calendarios segun el recorrido preorden
TVectorCalendario Preorden() const;
//Calendarios segun el recorrido inorden
TVectorCalendario Inorden() const;
//Calendarios segun el recorrido postorden
TVectorCalendario Postorden() const;
//Calendarios segun el recorrido por niveles
TVectorCalendario Niveles() const;
//Agregar ese calendario
bool Insertar(const TCalendario&);
//Eliminar un calendario por su equivalente
bool Borrar(const TCalendario&);
};
//==========
class TNodoAVL{
friend class TAVLCalendario;
private:
TCalendario item;
TAVLCalendario iz, de;
int fe;
public:
//Constructor por defecto
TNodoAVL();
//Constructor de copia
TNodoAVL(const TNodoAVL&);
//Asignacion
TNodoAVL& operator=(const TNodoAVL&);
//Destructor
~TNodoAVL();
};
#endif