Documente Academic
Documente Profesional
Documente Cultură
Recorrido en preorden:
Visitar la raíz
Recorrer el subárbol izquierdo
Recorrer el subárbol derecho
Recorrido en inorden:
Recorrer el subárbol izquierdo
Visitar la raíz
Recorrer el subárbol derecho
Recorrido en postorden:
Recorrer el subárbol izquierdo
Recorrer el subárbol derecho
Visitar la raíz
EJERCICIO:
o Código de TAD ARBOL:
1. Creamos clases:
2. NodoArbol
/*
*/
package tadarbol;
/**
*/
//declarar variables
int dato;
NodoArbol hijoIzquierdo,hijoDerecho;
String nombre;
this.dato=d;
this.nombre=nom;
this.hijoDerecho=null;
this.hijoIzquierdo=null;
3. ArbolBinario
package tadarbol;
NodoArbol raiz;
public ArbolBinario() {
raiz=null;
if(raiz==null) {
raiz=nuevo;
}else {
NodoArbol auxiliar=raiz;
NodoArbol padre;
while(true) {
padre=auxiliar;
if(d<auxiliar.dato) {
auxiliar=auxiliar.hijoIzquierdo;
if(auxiliar==null) {
padre.hijoIzquierdo=nuevo;
return;
}else {
auxiliar=auxiliar.hijoDerecho;
if(auxiliar==null) {
padre.hijoDerecho=nuevo;
return;
return raiz==null;
if(r!=null) {
inOrden(r.hijoIzquierdo);
System.out.println(r.dato+",");
inOrden(r.hijoDerecho);
if(r!=null) {
preOrden(r.hijoIzquierdo);
System.out.print(r.dato+",");
preOrden(r.hijoDerecho);
if(r!=null) {
postOrden(r.hijoIzquierdo);
System.out.print(r.dato+",");
postOrden(r.hijoDerecho);
NodoArbol aux=raiz;
while (aux.dato!=d) {
if(d<aux.dato) {
aux=aux.hijoIzquierdo;
}else {
aux=aux.hijoDerecho;
if(aux==null) {
return null;
}
return aux;
NodoArbol auxiliar=raiz;
NodoArbol padre=raiz;
boolean esHijoIzq=true;
while(auxiliar.dato!=d) {
padre=auxiliar;
if(d<auxiliar.dato) {
esHijoIzq=true;
auxiliar=auxiliar.hijoIzquierdo;
}else {
esHijoIzq=false;
auxiliar=auxiliar.hijoDerecho;
if(auxiliar==null) {
return false;
if(auxiliar==raiz) {
raiz=null;
}else if (esHijoIzq) {
padre.hijoIzquierdo=null;
}else {
padre.hijoDerecho=null;
}else if(auxiliar.hijoDerecho==null) {
if(auxiliar==raiz) {
raiz=auxiliar.hijoIzquierdo;
}else if (esHijoIzq) {
padre.hijoIzquierdo=auxiliar.hijoIzquierdo;
}else {
padre.hijoDerecho=auxiliar.hijoIzquierdo;
}else if(auxiliar.hijoIzquierdo==null) {
if(auxiliar==raiz) {
raiz=auxiliar.hijoDerecho;
}else if (esHijoIzq) {
padre.hijoIzquierdo=auxiliar.hijoDerecho;
}else {
padre.hijoDerecho=auxiliar.hijoIzquierdo;
}else {
NodoArbol reemplazo=obtenerNodoReemplazo(auxiliar);
if(auxiliar==raiz) {
raiz=reemplazo;
}else if(esHijoIzq) {
padre.hijoIzquierdo=reemplazo;
}else {
padre.hijoDerecho=reemplazo;
reemplazo.hijoIzquierdo=auxiliar.hijoIzquierdo;
return true;
NodoArbol reemplazarPadre=nodoReemp;
NodoArbol reemplazo=nodoReemp;
NodoArbol auxiliar=nodoReemp.hijoDerecho;
while(auxiliar!=null) {
reemplazarPadre=reemplazo;
reemplazo=auxiliar;
auxiliar=auxiliar.hijoIzquierdo;
if(reemplazo!=nodoReemp.hijoDerecho){
reemplazarPadre.hijoIzquierdo=reemplazo.hijoDerecho;
reemplazo.hijoDerecho=nodoReemp.hijoDerecho;
return reemplazo;
}
4. TadArbol
package tadarbol;
import javax.swing.JOptionPane;
public class TadArbol {
int opcion=0,elemento;
String nombre;
do {
try {
opcion = Integer.parseInt(JOptionPane.showInputDialog(null,
"1.Agregar un nodo\n"
+"7.Salir\n"
JOptionPane.QUESTION_MESSAGE));
switch(opcion) {
case 1:
arbolito.agregarNodo(elemento, nombre);
break;
case 2:
if(!arbolito.estaVacio()) {
System.out.println();
arbolito.inOrden(arbolito.raiz);
}else {
"!llenar",JOptionPane.INFORMATION_MESSAGE);
break;
case 3:
if(!arbolito.estaVacio()) {
System.out.println();
arbolito.preOrden(arbolito.raiz);
}else {
"!llenar",JOptionPane.INFORMATION_MESSAGE);
break;
case 4:
if(!arbolito.estaVacio()) {
System.out.println();
arbolito.postOrden(arbolito.raiz);
}else {
"!llenar",JOptionPane.INFORMATION_MESSAGE);
break;
case 5:
if(!arbolito.estaVacio()) {
arbolito.buscarNodo(elemento);
if(arbolito.buscarNodo(elemento)==null) {
"!nodo no localizado¡",JOptionPane.INFORMATION_MESSAGE);
}else {
System.out.println("nodo encontrado");
}else {
"!llenar",JOptionPane.INFORMATION_MESSAGE);
break;
case 6:
if(!arbolito.estaVacio()) {
"eliminando nodo",JOptionPane.QUESTION_MESSAGE));
arbolito.buscarNodo(elemento);
if(arbolito.eliminar(elemento)==false) {
"!nodo no localizado¡",JOptionPane.INFORMATION_MESSAGE);
}else {
"!nodo eliminado¡",JOptionPane.INFORMATION_MESSAGE);
}else {
"!llenar",JOptionPane.INFORMATION_MESSAGE);
break;
case 7:
"fin",JOptionPane.INFORMATION_MESSAGE);
default:
"...",JOptionPane.INFORMATION_MESSAGE);
}catch(NumberFormatException n) {
JOptionPane.showMessageDialog(null,"Error "+n.getMessage());
} while (opcion!=7);
}
5. Comprobamos: