Tema 4 - PowerPoint PPT Presentation

1 / 10
About This Presentation
Title:

Tema 4

Description:

Title: Tema 2. Tablas Author: carolina Last modified by: Pilar Martinez Created Date: 8/23/2006 6:10:49 PM Document presentation format: Presentaci n en pantalla – PowerPoint PPT presentation

Number of Views:99
Avg rating:3.0/5.0
Slides: 11
Provided by: carol611
Category:
Tags: tema

less

Transcript and Presenter's Notes

Title: Tema 4


1
  • Tema 4 Árboles.
  • Árbol sobre matriz.

2
Árbol sobre Matriz clases.
  • Clase NodoArbol
  • Clase árbol

public class ArbolMatriz final int NULL -1,
N 10 NodoArbol matriz int
numNodos ArbolMatriz () matriz new
NodoArbol N for (int i 0 i lt N
i) matriz i new NodoArbol () numNodos
0
class NodoArbol int clave, izq,
der NodoArbol () clave 0 izq
-1 der -1
3
Árbol sobre Matriz representación.
0 1 2 3 4 5 6 7 8 9
Clave 10 20 5 15 45 0 0 0 0 0
Hijo izquierdo 3 6 -1 -1 5 -1 -1 -1 -1 -1
Hijo derecho 2 4 -1 -1 -1 -1 -1 -1 -1 -1
4
Árbol sobre Matriz recorridos en profundidad.
  • Preorden
  • Orden central

private void preOrden (int i) if (i ! NULL)
System.out.print (matriz i.clave",
") preOrden (matriz i.izq) preOrden
(matriz i.0der) public void preOrden ()
preOrdenAux (0)
private void ordenCentralAux (int i) if (i !
NULL) ordenCentralAux (matriz
i.izq) System.out.print (matriz i.clave",
") ordenCentralAux (matriz i.der) publi
c void ordenCentral () ordenCentralAux (0)
  • Postorden

private void postOrdenAux (int i) if (i !
NULL) postOrdenAux (matriz i.izq) postOrd
enAux (matriz i.der) System.out.print
(matriz i.clave", ") public void
postOrden () postOrdenAux (0)
5
Árbol sobre Matriz búsqueda.
  • Búsqueda de un elemento
  • public boolean busqueda (int dato)
  • return busqueda (0, dato)
  • private boolean busqueda (int i, int dato)
  • boolean resul false
  • if (i ! NULL)
  • if (matriz i.clave gt dato)
  • resul busqueda (matriz i.izq, dato)
  • else if (matriz i.clave lt dato)
  • resul busqueda (matriz i.der, dato)
  • else resul true
  • return resul

6
Árbol sobre Matriz inserción (I)
  • Inserción
  • Comprobamos si no hay espacio (numNodos N)
  • O si el árbol está vacío (numNodos 0)
  • public void insertar (int dato)
  • if (numNodos 0)
  • matriz 0.clave dato
  • numNodos
  • else if (numNodos lt N)
  • insertarAux (0, dato)
  • else System.out.println ("árbol lleno")
  • Si ya hay algún nodo llamamos a un método
    auxiliar

7
Árbol sobre Matriz inserción (II)
  • Método auxiliar
  • private int insertarAux (int i, int dato)
  • int j NULL
  • if (i ! NULL)
  • if (matriz i.clave gt dato)
  • j insertarAux (matriz i.izq, dato)
  • if (j ! NULL)
  • matriz i.izq j
  • j i
  • else if (matriz i.clave lt dato)
  • j insertarAux (matriz i.der, dato)
  • if (j ! NULL)
  • matriz i.der j
  • j i
  • else System.out.println ("la clave ya
    existe")
  • else
  • j numNodos

8
Árbol sobre Matriz eliminación (I)
  • Se utiliza la misma estrategia que se ha visto ya
    (eliminar eliminar2Hijos)
  • Método de llamada
  • public void eliminar (int dato)
  • eliminar (0, dato)
  • Método eliminar2Hijos
  • private int eliminar2Hijos (int i, int j)
  • int resul i
  • if (matriz i.der ! NULL)
  • matriz i.der eliminar2Hijos (matriz
    i.der, j)
  • else
  • matriz j.clave matriz i.clave
  • borrarNodo (i)
  • resul matriz i.izq
  • return resul

9
Árbol sobre Matriz eliminación (II)
  • Método eliminar
  • private int eliminar (int i, int dato)
  • int j NULL
  • if (i ! NULL)
  • if (matriz i.clave gt dato)
  • j eliminar (matriz i.izq, dato)
  • if (j ! NULL)
  • matriz i.izq j
  • j i
  • else if (matriz i.clave lt dato)
  • jeliminar(matrizi.der, dato)
  • if (j ! NULL)
  • matriz i.der j
  • j i
  • else
  • numNodos--
  • else if (matriz i.izq NULL)
  • j matriz i.der
  • borrarNodo (i)
  • else
  • matrizi.izqeliminar2Hijos
    (matrizi.izq,i)
  • j i
  • else System.out.println ("la clave no existe")
  • return j

10
Árbol sobre Matriz eliminación (II)
  • Además se utiliza el método auxiliar borrarNodo
  • private void borrarNodo (int i)
  • for (int j i j lt numNodos j)
  • matriz j.clave matriz j1.clave
  • matriz j.der matriz j1.der
  • matriz j.izq matriz j1.izq
  • for (int j 0 j lt numNodos j)
  • if (matriz j.der gt i)
  • matriz j.der matriz j.der -1
  • if (matriz j.izq gt i)
  • matriz j.izq matriz j.izq -1
Write a Comment
User Comments (0)
About PowerShow.com