Professional Documents
Culture Documents
COMPUTACIÓN
INTEGRANTES:
Arequipa - 2017
DEF ÁRBOL BINARIO: Un árbol binario es un grafo conexo(solo un camino), acíclico (no
forma ciclos) no dirigido tal que el grado de cada vértice no es mayor a 3. De esta forma
solo existe un camino entre un par de nodos.
Como vemos por la definición la raíz es el antepasado de todos los demás nodos, no puede
haber otro ps por definición de árbol binario la raíz sería el antepasado de todos los demás
nodos expecto de el mismo, caso contrario ya no seria un arbol binario
5.1.2 Pruebe que un nodo de un árbol binario tiene como máximo un padre.
Por definición un árbol es binario porque puede tener hasta 2 subárboles , conexo y acíclico,
caso contrario no sería un arbol binario.
int numnodos=0;
void Nnodos(ArbolBB *aux)
{
if(aux==NULL)
return;
Nnodos(aux->derecho);
numnodos++;
Nnodos(aux->izquierdo);
}
int suma=0;
void suma_nodos(ArbolBB *aux)
{
if(aux==NULL)
return;
suma_nodos(aux->derecho);
suma=suma+aux->num;
suma_nodos(aux->izquierdo);
}
C) la profundidad de un árbol binario.
int altura(ArbolBB *aux)
{
int altura_izq, altura_der;
if(aux==NULL)
return -1;
else
{
altura_izq=altura(aux->izquierdo);
altura_der=altura(aux->derecho);
if(altura_izq>altura_der)
return altura_izq+1;
else
return altura_der+1;
}
5.1.6 Pruebe que un árbol estrictamente binario con n hojas contiene 2n -1 nodos.
Ahora agrega otro pedazo mínimo al árbol. Para hacer eso, necesitas agregar otros dos
nodos y el árbol se ve así:
Tenga en cuenta que debe agregar nodos en pares para cumplir con la restricción
establecida anteriormente. Agregar un par de nodos siempre agrega una hoja (dos nuevos
nodos hoja, pero pierde uno ya que se convierte en un nodo interno). El crecimiento del
nodo progresa a medida que la serie: 1, 3, 5, 7, 9 ... pero el crecimiento de la hoja es: 1, 2,
3, 4, 5 ... Es por eso que la fórmula N = 2n - 1 es válida para este tipo de árbol.
5.1.9 Dos árboles binarios son similares si ambos están vacíos, o si no están vacíos y
sus subárboles izquierdos y subárboles derechos son similares. Escriba un algoritmo
para determinar si dos árboles binarios son similares.
bool flag= true;
5.1.10 Dos árboles binarios son similares reflejados si ambos están vacíos o si ambos
no están vacíos y el subárbol izquierdo de cada uno es similar a la sublínea derecha
de la otra. Escriba un algoritmo para determinar si dos árboles binarios son similares
reflejados.
bool Reflejados(ArbolBB * root1, ArbolBB * root2)
{
if (root1 == NULL && root2 == NULL)
{
return true;
}
///si cualquier nodo no tiene el correspondiente nodo en el otro árbol, devuelve false
if ((root1 == NULL && root2 != NULL) || (root1 != NULL && root2 == NULL))
{
return false;
}
///si el nodo en un árbol es el lado secundario en otro árbol, y viceversa
return Reflejados(root1->izquierdo, root2->derecho) && Reflejados(root1->derecho, root2-
>izquierdo);
5.1.13
a) Escriba un algoritmo que acepte un puntero a un árbol binario de búsqueda y
elimine el elemento más pequeño del árbol.
int minimo=0;
int Minimo(ArbolBB *aux)
{
if (aux == NULL)
return aux->num;
while (aux->izquierdo != NULL )
aux = aux->izquierdo;
return aux->num;
}
int main()
{
minimo=Minimo(raiz1);
remover(raiz1,minimo);
return 0;
BIbliografía:
Matemáticas Discretas y Combinatoria ;Ralph P. Grimaldi 3° edición Pretince Hall.
Matemática Discretas Sexta edición Richard Johnsonbaugh; Pretince Hall.
Matematicas Discretas eduard R. Sheninerman; thomson Leraning
Estructura de datos: Oswaldo Cairó, Silvia Guardati.
4)
A) numero de nodos en arbol binario
B) la suma del contenido de todos los nodos en un árbol binario;
9) Arboles similares
10) arboles similares reflejados
13) eliminar el mínimo