0% encontró este documento útil (0 votos)
34 vistas8 páginas

Tarea

Cargado por

jeronimo
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)
34 vistas8 páginas

Tarea

Cargado por

jeronimo
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

INGENIERIA EN SISTEMAS COMPUTACIONALES

UNIR MEXICO
Ingeniería en sistemas computacionales

Actividad no2
Implementación de arbol

Nombre del alumno


Gerónimo Amador Ordoñez
asignatura
Estructuras de datos
profesora
Vanessa del Rosario Alcalá Ramírez
Introducción
un árbol binario es una estructura de datos en la cual cada nodo puede tener un hijo izquierdo
y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre "binario"). Este árbol
dentro de todos los tipos de arboles de búsqueda entra en la categoría de sencillos ya que no
tiene muchas mas condiciones además de la de solo poder tener 2 hijos siendo estas
condiciones la que facilitan mucho el trabajo de hacer este árbol
public class ArbolB {
Nodo raiz;
int tamanio=0;
public ArbolB() {
raiz = null;
}

public void poner(int dato, String nombre){


Nodo nuevoN=new Nodo(dato,nombre);
if (raiz==null){
raiz=nuevoN; //enlaces
tamanio++;
}else{
Nodo aux=raiz;
Nodo padre;
while(true){
padre=aux;
if(dato<aux.contenido){//aqui estamos haciendo el filtro para saber a donde iran si a
la derecha o a la izquierda
aux=aux.hijoIzquierdo; //nota si son mayores van a la derecha y si son menores van
a la izquierda
if(aux==null){
padre.hijoIzquierdo=nuevoN;
tamanio++;
return;
}
}else{
aux=aux.hijoDerecho;
if(aux==null){
padre.hijoDerecho=nuevoN;
tamanio++;
return;
}
}

}
}

} public boolean vacio(){


return raiz==null;
}

//metodo inOrder

public void inOrder(Nodo r){


if(r!=null){
inOrder(r.hijoIzquierdo);
System.out.println(r.contenido);
inOrder(r.hijoDerecho);

}
}
public void longitud(){
System.out.println(tamanio);
}

//metodo preOrder

public void preOrder(Nodo r){


if(r!=null){
System.out.println(r.contenido);
preOrder(r.hijoIzquierdo);
preOrder(r.hijoDerecho);
}

} public void postOrder(Nodo r){


if(r!=null){
postOrder(r.hijoIzquierdo);
postOrder(r.hijoDerecho);
System.out.println(r.contenido);

}
}

public boolean borrado(int dato){


Nodo aux=raiz;
Nodo padre=raiz;
boolean Izquierda=true;
while(aux.contenido!=dato){
padre=aux;
if(dato<aux.contenido){
aux=aux.hijoIzquierdo;
}else{
Izquierda=false;
aux=aux.hijoDerecho;
}
if(aux==null){
return false;
}
}
if(aux.hijoIzquierdo==null&&aux.hijoDerecho==null){
if(aux==raiz){
raiz=null;
}else if(Izquierda){
padre.hijoIzquierdo=null;
}else{
padre.hijoDerecho=null;
}
}else if(aux.hijoDerecho==null){
if(aux==raiz){
raiz=aux.hijoIzquierdo;
}else if(Izquierda){
padre.hijoIzquierdo=aux.hijoIzquierdo;
}else{
padre.hijoDerecho=aux.hijoIzquierdo;
}
}else if(aux.hijoIzquierdo==null){
if(aux==raiz){
raiz=aux.hijoDerecho;
}else if(Izquierda){
padre.hijoIzquierdo=aux.hijoDerecho;
}else{
padre.hijoDerecho=aux.hijoDerecho;
}
}else{
Nodo cambio=obtenerNodo(aux);
if(aux==raiz){
raiz=cambio;
}else if(Izquierda){
padre.hijoIzquierdo=cambio;
}else{
padre.hijoDerecho=cambio;
}
cambio.hijoIzquierdo=aux.hijoIzquierdo;
}
return true;
}
public Nodo obtenerNodo(Nodo cambio){
Nodo cambioPadre=cambio;
Nodo nuevoN=cambio;
Nodo aux=cambio.hijoDerecho;
while(aux!=null){
cambioPadre=nuevoN;
nuevoN=aux;
aux=aux.hijoIzquierdo;
}
if(nuevoN!=cambio.hijoDerecho){
cambioPadre.hijoIzquierdo=nuevoN.hijoDerecho;
nuevoN.hijoDerecho=cambio.hijoDerecho;
}
System.out.println("el nuevo nodo es "+nuevoN);
tamanio--;
return nuevoN;

//metodo buscar
public Nodo buscar(int dato){
Nodo auxNodo=raiz;
while(auxNodo.contenido!=dato){
if(dato<auxNodo.contenido){
auxNodo=auxNodo.hijoIzquierdo;
}else{
auxNodo=auxNodo.hijoDerecho;
}
if(auxNodo==null){
return null;
}
}
return auxNodo;
}
}

Bibliografia
https://www.aprenderaprogramar.com/foros/index.php?topic=1367.5;wap2
https://ccia.ugr.es/~jfv/ed1/tedi/cdrom/docs/arb_BB.htm
https://www.cs.us.es/~jalonso/cursos/i1m-15/temas/tema-19.html
Concluciones
Como aprendimos en esta tarea los arboles son muy útiles para almacenar una alta
cantidad de datos entre otras funciones como ciencia de datos etc.. claro que dentro de
todas las estructuras creo que estas son quizás las que menos me gustan por lo molestos
que llegan a ser algunos de sus métodos mas útiles y necesarios como el borrado o las
rotaciones (pd resto de las conclusiones en el video).

También podría gustarte