Prueba insertarbuscarborrarnodoarbol
Upcoming SlideShare
Loading in...5
×
 

Prueba insertarbuscarborrarnodoarbol

on

  • 1,142 views

 

Statistics

Views

Total Views
1,142
Slideshare-icon Views on SlideShare
1,132
Embed Views
10

Actions

Likes
0
Downloads
61
Comments
0

1 Embed 10

http://mvelascora.wordpress.com 10

Accessibility

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Prueba insertarbuscarborrarnodoarbol Prueba insertarbuscarborrarnodoarbol Document Transcript

    • class NodoArbol{ int Dato; NodoArbol izq; NodoArbol der; public NodoArbol (int dato){ this.dato=dato; izq=der=null; }}public void insertar (int dato){ NodoArbo nuevonodo= new NodoArbol(dato); if (raíz == null) raíz = nuevonodo;else { NodoArbol actual = raíz; NodoArbol p; while(true) { p= actual; if (dato < actual.dato) //ir a la izquierda { actual = actual.izq; if (actual == null ) { p.izq = nuevonodo; return; } } //fin ir a la izquierda else //es mayor { actual = actual.der; if (actual == null) { p.der = nuevonodo; return; } } //fin else ir derecha } //fin while } //fin else no raíz} //fin insert public NodoArbol find (int llave){ Nodo actual = raíz; while (actual.dato != llave) { if (llave menor actual.dato) actual = actual.izq; else actual = actual.der; if (actual == null) return null;} //fin while return actual;}<br />public boolean delete (int llave){ NodoArbol actual = raíz; NodoArbol p = raíz; Boolean hijoizq= true; while (actual.Dato != llave) { p= actual; if (llave < actual.Dato) { hijoizq= true; actual.actual.izq // va a la izquierda } else { hijoizq= false; actual= actual.der // va a la derecha } if (actual == null) // no lo encontro return false; } // fin while // encontro el nodo a borrar// si no tiene hijo, simplemente lo borraif (actual.izq == null && actual.der == null) { (if actual == raiz) // si es la raíz root = null;// el árbol esta vacío else if(hijoizq) p.izq = null //lo desconecta de p else p.der = null; }// si no tiene hijo derecho, lo reemplaza con el subárbol izquierdoelse if( actual.der == null) if (actual == raiz) raiz = actual.izq; else if (hijoizq) p.izq =actual.izq; else p.der= actual.izq; // si no tiene hijo izquierdo, lo reemplaza con el subarbol derecho else if (actual.izq == null) if (actual == raiz) raiz = actual.der; else if (hijoizq) p.izq =actual.der; else p.der= actual.der; else // tiene dos hijos, es reemplazado por el sucesor { // llama al metodo obtener sucesor del nodo a borrar (actual) Nodo sucesor = getSucesor (actual); // conecta p de actual con el sucesor if (actual ==raiz) raiz = sucesor; else if (hijoizq) p.izq= sucesor; else p.der=succesor; successor.izq = actual.izq //conecta sucesor con la rama izq de actual } //fin tiene dos hijos return true; } fin borrarprivate NodoArbol getSucesor(Nodo delNodo) { NodoArbol sucerorp= delNodo; NodoArbol sucesor = delNodo; NodoArbol actual= delNodo.der; / va al hijo derecho while (actual != null) { sucesorp = sucesor; sucesor = actual; actual = actual.izq; } // if (sucesor != delNodo.der) { sucesorp.izq= sucesor.der; sucesor.der = delNodo.der; } return sucesor; } // fin getSucesor<br />Tarea, hacer la prueba de escritorio borrando los nodos del ejemplo mostrado.<br />