Árboles
Definición <ul><li>Un árbol dirigido es una estructura: </li></ul><ul><li>Jerárquica   porque los componentes están a dist...
Representación de un Árbol. <ul><li>Mediante diagramas de Venn </li></ul><ul><li>Mediante círculos y flechas </li></ul><ul...
Conceptos Básicos  <ul><li>Si hay un camino de A hasta B ,  se dice que A es antecesor de B, y que B es sucesor de A. </li...
Conceptos Básicos (cont.) <ul><li>Raíz  es el nodo que no tiene ningún predecesor (sin padre).  </li></ul><ul><li>Hoja  es...
Conceptos Básicos (cont.) <ul><li>Los nodos de la misma generación tienen el mismo nivel. </li></ul><ul><li>Grado de un no...
Conceptos Básicos (cont.) Raíz hijo Hermano Padre hoja Subárbol Nivel de profundidad  = 7 Grado de un nodo = 3 Grado del á...
Tipos de árboles <ul><li>Un árbol ordenado : Es aquel en el que las ramas de los nodos están ordenadas. </li></ul><ul><li>...
Tipos de árboles (cont.) <ul><li>Árboles de expresión </li></ul><ul><li>Representan un orden de ejecución  </li></ul>(A* B...
Tipos de árboles (cont.) <ul><li>Árboles similares :  Los que tienen la misma estructura (forma) </li></ul><ul><li>Árboles...
Tipos de árboles (cont.) <ul><li>Árbol binario completo: </li></ul><ul><li>Es un árbol en el que todos sus nodos, excepto ...
Árboles   Binarios de Búsqueda (ABB)
Árboles Binarios de Búsqueda <ul><li>Un árbol es un  ABB  si éste es binario y sus nodos son subárboles de búsqueda binari...
Características de un ABB <ul><li>Todos los nodos a la izquierda son menores al padre. </li></ul><ul><li>Todos los nodos a...
Conversión de un árbol general en un árbol binario <ul><li>Los hermanos se enlazan en forma horizontal (lineal) </li></ul>...
Conversión de un árbol general en un árbol binario (cont.) = que da  así A B D C E F G H I J K L M N O A M B C D F E G I H...
Representación de un árbol binario en la memoria. <ul><li>Cada noto tiene la siguiente forma: </li></ul>Raíz R A B C D E i...
Clase nodo de un ABB <ul><li>Class Nodo{ </li></ul><ul><li>nodo izq; </li></ul><ul><li>nodo der; </li></ul><ul><li>int dat...
Operaciones sobre un árbol <ul><li>Recorrer árbol </li></ul><ul><ul><li>Preorden </li></ul></ul><ul><ul><li>Inorden </li><...
Recorridos de un árbol de Búsqueda Binaria (ABB) <ul><li>Recorrido en preorden (prefijo) </li></ul><ul><ul><li>Visita la r...
Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>PREORDEN (NODO) </li></ul><ul><li>{NODO es un dato de tip...
Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>Recorrido en inorden (infijo) </li></ul><ul><ul><li>Recor...
Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>INORDEN (NODO) </li></ul><ul><li>{NODO es un apuntador a ...
Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>Recorrido en postorden (postfijo) </li></ul><ul><ul><li>R...
Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>POSTORDEN (NODO) </li></ul><ul><li>Si NODO != null entonc...
Inserción en un ABB <ul><li>La  inserción  es una operación que se puede realizar eficientemente en un árbol binario de bú...
Inserción en un ABB (cont.) <ul><li>Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condicion...
Inserción en un ABB (cont.) <ul><li>Algoritmo </li></ul><ul><li>Si  NODO ≠ Null{ </li></ul><ul><ul><li>Si  (INFOR < NODO.I...
Inserción en un ABB (cont.) <ul><li>Supóngase que quieren insertarse las siguientes los siguientes datos en un árbol binar...
Inserción en un ABB (cont.) Solución <ul><li>120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56 </li></ul>120 87 140 43 130 56 I...
Eliminar un nodo <ul><li>Para eliminar un nodo  existen los siguientes casos: </li></ul><ul><ul><li>Si el elemento a borra...
Eliminar un nodo (cont.) <ul><li>Caso 1 </li></ul><ul><li>Si el elemento a borrar es terminal (hoja), simplemente se elimi...
Eliminar un nodo (cont.) <ul><li>Caso 2 </li></ul><ul><li>Si el  elemento a borrar tiene un solo hijo, entonces tiene que ...
Eliminar un nodo (cont.) <ul><li>Caso 3 </li></ul><ul><li>Si el elemento a borrar tiene los dos hijos, entonces se tienen ...
Eliminar un nodo (cont.) <ul><li>si NODO !=null  entonces </li></ul><ul><li>si Dato < NODO.info  </li></ul><ul><li>  Elimi...
Eliminar un nodo (cont.) <ul><li>Si no </li></ul><ul><li>  {aux = otro.izq </li></ul><ul><li>  aux1 = Aux </li></ul><ul><l...
Eliminar un nodo (cont.) <ul><li>Elimina el 22,. 99, 87, 120, 140, 135, 56 </li></ul>93 87 43 99 120 130 140 65 56 22 135
Buscar nodo con información <ul><li>Si dato < NODO.info </li></ul><ul><li>Si NODO.IZQ == null  </li></ul><ul><li>  Escribi...
Contar nodos <ul><li>//cuenta los nodos que hay en el árbol </li></ul><ul><li>public static int nodo (nodo raiz){ </li></u...
Sumar los nodos <ul><li>//suma  los nodos que hay en el árbol </li></ul><ul><li>public static int sumaNodo( nodo raiz){ </...
Calcular profundidad del árbol <ul><li>// calcula la profundidad de un árbol </li></ul><ul><li>public int profundidad (Nod...
Contar hojas. <ul><li>// Cuenta  hojas de un árbol </li></ul><ul><li>public int contarHojas (Nodo raiz) { </li></ul><ul><l...
Upcoming SlideShare
Loading in...5
×

Arboles02

4,137

Published on

Published in: Travel, Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,137
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
183
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Arboles02

  1. 1. Árboles
  2. 2. Definición <ul><li>Un árbol dirigido es una estructura: </li></ul><ul><li>Jerárquica porque los componentes están a distinto nivel. </li></ul><ul><li>Organizada porque importa la forma en que esté dispuesto el contenido. </li></ul><ul><li>Dinámica porque su forma, tamaño y contenido pueden variar durante la ejecución. </li></ul><ul><li>Un árbol puede ser: </li></ul><ul><li>vacío, </li></ul><ul><li>Una raíz + subárboles. </li></ul>
  3. 3. Representación de un Árbol. <ul><li>Mediante diagramas de Venn </li></ul><ul><li>Mediante círculos y flechas </li></ul><ul><li>Mediante paréntesis anidados: </li></ul><ul><li>( a ( b (e,f), c, d ) ) </li></ul>a b c d e f a c d b e f
  4. 4. Conceptos Básicos <ul><li>Si hay un camino de A hasta B , se dice que A es antecesor de B, y que B es sucesor de A. </li></ul><ul><li>Padre es el antecesor inmediato de un nodo </li></ul><ul><li>Hijo , cualquiera de sus desc}ientes inmediatos. </li></ul><ul><li>Descendiente de un nodo, es cualquier sucesor de dicho nodo. </li></ul><ul><li>Hermano de un nodo, es otro nodo con el mismo padre. </li></ul><ul><li>Generación , es un conjunto de nodos con la misma profundidad. </li></ul>
  5. 5. Conceptos Básicos (cont.) <ul><li>Raíz es el nodo que no tiene ningún predecesor (sin padre). </li></ul><ul><li>Hoja es el nodo que no tiene sucesores (sin hijos) (Terminal). Los que tienen predecesor y sucesor se llaman nodos interiores. </li></ul><ul><li>Rama es cualquier camino del árbol. </li></ul><ul><li>Bosque es un conjunto de árboles desconectados. </li></ul><ul><li>Nivel o profundidad de un nodo, es la longitud del camino desde la raíz hasta ese nodo. El nivel puede de}irse como 0 para la raíz y nivel (predecesor)+1 para los demás nodos. </li></ul>
  6. 6. Conceptos Básicos (cont.) <ul><li>Los nodos de la misma generación tienen el mismo nivel. </li></ul><ul><li>Grado de un nodo , es el número de flechas que salen de ese nodo (hijos). El número de las que entran siempre es uno. </li></ul><ul><li>Grado de un árbol , es el mayor grado que puede hallarse en sus nodos. </li></ul><ul><li>Longitud del camino entre 2 nodos : es el número de arcos que hay entre ellos. </li></ul>
  7. 7. Conceptos Básicos (cont.) Raíz hijo Hermano Padre hoja Subárbol Nivel de profundidad = 7 Grado de un nodo = 3 Grado del árbol = 3
  8. 8. Tipos de árboles <ul><li>Un árbol ordenado : Es aquel en el que las ramas de los nodos están ordenadas. </li></ul><ul><li>Los de grado 2 se llaman árboles binarios. </li></ul><ul><li>Cada árbol binario tiene un subárbol izquierda y subárbol derecha. </li></ul>+ - ^ 3.5 / B A D C
  9. 9. Tipos de árboles (cont.) <ul><li>Árboles de expresión </li></ul><ul><li>Representan un orden de ejecución </li></ul>(A* B) + C * D + E (7 + 12) * (-9)  -171 + + * B A * E D C * + - 7 12 9
  10. 10. Tipos de árboles (cont.) <ul><li>Árboles similares : Los que tienen la misma estructura (forma) </li></ul><ul><li>Árboles Equivalentes: Son los árboles similares y sus nodos contienen la misma información. </li></ul><ul><li>Árboles n-ario: Es un árbol ordenado cuyos nodos tiene N subárboles, y donde cualquier número de subárboles puede ser árboles vacíos </li></ul>1 2 5 6 4 3 9 8 7 a b e f d c i h g
  11. 11. Tipos de árboles (cont.) <ul><li>Árbol binario completo: </li></ul><ul><li>Es un árbol en el que todos sus nodos, excepto los del ultimo nivel, tienen dos hijos. </li></ul><ul><li>Número de nodos en un árbol binario completo = 2 h –1 (en el ejemplo h = 4,  15) esto nos ayuda a calcular el nivel de árbol necesario para almacenar los datos de una aplicación. </li></ul>
  12. 12. Árboles Binarios de Búsqueda (ABB)
  13. 13. Árboles Binarios de Búsqueda <ul><li>Un árbol es un ABB si éste es binario y sus nodos son subárboles de búsqueda binarios y contienen información ordenada de tal que todos los elementos a la izquierda de la raíz son menores a la raíz y todos lo elementos a la derecha de la raíz son mayores a la raíz. </li></ul>
  14. 14. Características de un ABB <ul><li>Todos los nodos a la izquierda son menores al padre. </li></ul><ul><li>Todos los nodos a la derecha son mayores al padre. </li></ul><ul><li>Y solo pueden tener 2 hijos a lo mucho. </li></ul>50 95 90 110 110 88 85 100 105 102 68 34 40 45 26 42 8
  15. 15. Conversión de un árbol general en un árbol binario <ul><li>Los hermanos se enlazan en forma horizontal (lineal) </li></ul><ul><li>Se enlaza en forma vertical el padre con el hijo que se encuentra mas a la izquierda y se elimina el enlace de este padre con los demás hijos. </li></ul><ul><li>Se rota el diagrama resultante 45 grados hacia la izquierda. </li></ul>
  16. 16. Conversión de un árbol general en un árbol binario (cont.) = que da así A B D C E F G H I J K L M N O A M B C D F E G I H K J O N L O A M B C D F E G I H K J N L
  17. 17. Representación de un árbol binario en la memoria. <ul><li>Cada noto tiene la siguiente forma: </li></ul>Raíz R A B C D E izq info der
  18. 18. Clase nodo de un ABB <ul><li>Class Nodo{ </li></ul><ul><li>nodo izq; </li></ul><ul><li>nodo der; </li></ul><ul><li>int dato; </li></ul><ul><li>} </li></ul>
  19. 19. Operaciones sobre un árbol <ul><li>Recorrer árbol </li></ul><ul><ul><li>Preorden </li></ul></ul><ul><ul><li>Inorden </li></ul></ul><ul><ul><li>Postorden </li></ul></ul><ul><li>Inserción nodo </li></ul><ul><li>Eliminar nodo </li></ul><ul><li>Buscar nodo con información </li></ul><ul><li>Sumar los nodos </li></ul><ul><li>Calcular profundidad del árbol </li></ul><ul><li>Contar nodos </li></ul><ul><li>Contar hojas. </li></ul>
  20. 20. Recorridos de un árbol de Búsqueda Binaria (ABB) <ul><li>Recorrido en preorden (prefijo) </li></ul><ul><ul><li>Visita la raíz. </li></ul></ul><ul><ul><li>Recorre el subárbol izquierdo. </li></ul></ul><ul><ul><li>Recorre el subárbol derecho. </li></ul></ul>RID Preorden = A B D G C E H I F A B C D E F H I G
  21. 21. Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>PREORDEN (NODO) </li></ul><ul><li>{NODO es un dato de tipo apuntador} </li></ul><ul><li>{INFO, IZQ, DER son campos del registro} </li></ul><ul><li>Si nodo != null entonces </li></ul><ul><li>{ </li></ul><ul><li>Visitar NODO {escribir NODO.INFO} </li></ul><ul><li>llamar a preorden con NODO.IZQ </li></ul><ul><li>{llamada recursiva a preorden con la </li></ul><ul><li>rama izquierda del nodo en cuestión} </li></ul><ul><li>llamar a preorden con NODO.DER </li></ul><ul><li>{llamada recursiva a preorden} </li></ul><ul><li>} </li></ul>
  22. 22. Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>Recorrido en inorden (infijo) </li></ul><ul><ul><li>Recorre el subárbol izquierdo. </li></ul></ul><ul><ul><li>Visita la raíz </li></ul></ul><ul><ul><li>Recorre el subárbol derecho. </li></ul></ul>Inorden : D G B A H E I C F IRD A B C D E F H I G
  23. 23. Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>INORDEN (NODO) </li></ul><ul><li>{NODO es un apuntador a registro} </li></ul><ul><li>Si NODO != null entonces </li></ul><ul><li>{ </li></ul><ul><li>INORDEN (NODO.IZQ); </li></ul><ul><li>Escribir NODO.INFO; </li></ul><ul><li>INORDEN (NODO.DER); </li></ul><ul><li>} </li></ul>
  24. 24. Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>Recorrido en postorden (postfijo) </li></ul><ul><ul><li>Recorre el subárbol izquierdo. </li></ul></ul><ul><ul><li>Recorre el subárbol derecho. </li></ul></ul><ul><ul><li>Visita la raíz. </li></ul></ul>Postorden : G D B H I E F C A IDR A B C D E F H I G
  25. 25. Recorridos de un árbol de Búsqueda Binaria (ABB) (cont.) <ul><li>POSTORDEN (NODO) </li></ul><ul><li>Si NODO != null entonces </li></ul><ul><li>{ </li></ul><ul><li>POSTORDEN (NODO.IZQ); </li></ul><ul><li>POSTORDEN (NODO.DER); </li></ul><ul><li>Escribir NODO.INFO; </li></ul><ul><li>} </li></ul>
  26. 26. Inserción en un ABB <ul><li>La inserción es una operación que se puede realizar eficientemente en un árbol binario de búsqueda. La estructura crece conforme se inserten elementos al árbol. </li></ul><ul><li>Los pasos que deben realizarse para insertar un elemento a un ABB son los siguientes: </li></ul><ul><ul><li>Debe compararse el valor o dato a insertar con la raíz del árbol. Si es mayor , debe avanzarse hacia el subárbol derecho . Si es menor , debe avanzarse hacia el subárbol izquierdo . </li></ul></ul>
  27. 27. Inserción en un ABB (cont.) <ul><li>Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones </li></ul><ul><ul><li>El subárbol derecho es igual a vació, o el subárbol izquierdo es igual a vació; en cuyo caso se procederá a insertar el elemento en el lugar que le corresponde. </li></ul></ul><ul><ul><li>El valor o dato que quiere insertarse es igual a la raíz del árbol; en cuyo caso no se realiza la inserción. </li></ul></ul>
  28. 28. Inserción en un ABB (cont.) <ul><li>Algoritmo </li></ul><ul><li>Si NODO ≠ Null{ </li></ul><ul><ul><li>Si (INFOR < NODO.INFO) </li></ul></ul><ul><li>Regresar a INSERCION1 con NODO.IZQ e INFOR </li></ul><ul><li>sino </li></ul><ul><li>si ( INFOR > NODO.INFO) </li></ul><ul><li>Regresar a INSERCION1 con NODO.DER e INFOR </li></ul><ul><li>sino </li></ul><ul><li> Escribir “El nodo ya se encuentra en el árbol” </li></ul><ul><ul><li>} // } si </li></ul></ul><ul><li>else </li></ul><ul><li>CREA (OTRO) {Crear un nuevo nodo} </li></ul><ul><li>Hacer OTRO.IZQ = null, </li></ul><ul><li>OTRO.DER = null, </li></ul><ul><li>OTRO.INFO = INFOR y NODO = OTRO </li></ul><ul><li>} </li></ul>
  29. 29. Inserción en un ABB (cont.) <ul><li>Supóngase que quieren insertarse las siguientes los siguientes datos en un árbol binario de búsqueda que se encuentra vació. </li></ul><ul><li>120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56 </li></ul>
  30. 30. Inserción en un ABB (cont.) Solución <ul><li>120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56 </li></ul>120 87 140 43 130 56 I 22 65 99
  31. 31. Eliminar un nodo <ul><li>Para eliminar un nodo existen los siguientes casos: </li></ul><ul><ul><li>Si el elemento a borrar es Terminal (hoja), </li></ul></ul><ul><ul><li>Si el elemento a borrar tiene un solo hijo, </li></ul></ul><ul><ul><li>Si el elemento a borrar tiene los dos hijo, </li></ul></ul>
  32. 32. Eliminar un nodo (cont.) <ul><li>Caso 1 </li></ul><ul><li>Si el elemento a borrar es terminal (hoja), simplemente se elimina. </li></ul><ul><li>aux = aux.izq = null </li></ul>Ejemplo eliminar nodo 7 8 1 9 7 6 8 1 9 7 6 8 1 9 6
  33. 33. Eliminar un nodo (cont.) <ul><li>Caso 2 </li></ul><ul><li>Si el elemento a borrar tiene un solo hijo, entonces tiene que sustituirlo por el hijo </li></ul>8 1 9 7 1 9 7 8 1 9 7 Ejemplo: eliminar nodo 8
  34. 34. Eliminar un nodo (cont.) <ul><li>Caso 3 </li></ul><ul><li>Si el elemento a borrar tiene los dos hijos, entonces se tienen que sustituir por el nodo que se encuentra mas a la izquierda en el subárbol derecho, o por el nodo que se encuentra mas a la derecha en el subárbol izquierdo. </li></ul>Ejemplo: eliminar el 6 8 1 9 7 6 8 1 9 7 7 8 1 9 7
  35. 35. Eliminar un nodo (cont.) <ul><li>si NODO !=null entonces </li></ul><ul><li>si Dato < NODO.info </li></ul><ul><li> Eliminación (NODO.izq, Dato) </li></ul><ul><li>si no </li></ul><ul><li>si dato > NODO.INFO </li></ul><ul><li>entonces Eliminación (NODO.der, Dato </li></ul><ul><li>si no </li></ul><ul><li>otro = NODO </li></ul><ul><li> si otro.der == null </li></ul><ul><li> entonces NODO = otro.izq </li></ul><ul><li>si no </li></ul><ul><li> si otro.izq == null </li></ul><ul><li>entonces NODO = otro.der </li></ul>
  36. 36. Eliminar un nodo (cont.) <ul><li>Si no </li></ul><ul><li> {aux = otro.izq </li></ul><ul><li> aux1 = Aux </li></ul><ul><li> while ( aux.der != null ) </li></ul><ul><li>aux1 = aux </li></ul><ul><li>aux = aux.der </li></ul><ul><li> } </li></ul><ul><li> otro.info = aux.info </li></ul><ul><li> otro = aux </li></ul><ul><ul><ul><li> aux1.der = aux.izq </li></ul></ul></ul><ul><ul><ul><li> q uita (otro) (null ) </li></ul></ul></ul><ul><li>si no Escribir (‘el nodo no se encuentra en el árbol’) </li></ul><ul><li>} </li></ul>
  37. 37. Eliminar un nodo (cont.) <ul><li>Elimina el 22,. 99, 87, 120, 140, 135, 56 </li></ul>93 87 43 99 120 130 140 65 56 22 135
  38. 38. Buscar nodo con información <ul><li>Si dato < NODO.info </li></ul><ul><li>Si NODO.IZQ == null </li></ul><ul><li> Escribir “El nodo no se encuentra en el árbol” </li></ul><ul><li>Si no </li></ul><ul><li>Búsqueda (NODO.izq,dato) </li></ul><ul><li>Si no </li></ul><ul><li>Si Dato > NODO.INFO entonces Si NODO.DER = null </li></ul><ul><li>Escribir “No se encuentra” </li></ul><ul><li>Si no Búsqueda (NODO.der,dato) </li></ul><ul><li>Si no Escribir “El NODO se encuentra en el árbol” </li></ul><ul><li>si nodo != null </li></ul><ul><li>si Dato < NODO .INFO </li></ul><ul><li>Búsqueda (Nodo.izq,Dato) </li></ul><ul><li>si no </li></ul><ul><li>si Dato > No dato.der </li></ul><ul><li>Búsqueda (No dato.der,dato) </li></ul><ul><li>si no </li></ul><ul><li>escribir “El Dato se encuentra” </li></ul><ul><li>Si no Escribir “El dato no se encuentra en el árbol ” </li></ul>
  39. 39. Contar nodos <ul><li>//cuenta los nodos que hay en el árbol </li></ul><ul><li>public static int nodo (nodo raiz){ </li></ul><ul><li>if (raiz == null) return 0; </li></ul><ul><li>else </li></ul><ul><li>return (1+ Nodo( raiz.der) + Nodo( raiz.izq)) </li></ul><ul><li>} </li></ul>
  40. 40. Sumar los nodos <ul><li>//suma los nodos que hay en el árbol </li></ul><ul><li>public static int sumaNodo( nodo raiz){ </li></ul><ul><li>if(raiz == null) return 0; </li></ul><ul><li>else </li></ul><ul><li>Return (sumaNodo (raiz.der) + sumaNodo (raiz.izq) ) </li></ul><ul><li>} </li></ul>
  41. 41. Calcular profundidad del árbol <ul><li>// calcula la profundidad de un árbol </li></ul><ul><li>public int profundidad (Nodo raiz) { </li></ul><ul><li>if (raiz == null) return 0; </li></ul><ul><li>If (profundidad (raiz.der) > profundidad (raiz.izq)) </li></ul><ul><li>return profundidad (raiz.der) + 1; </li></ul><ul><li>else </li></ul><ul><li>return profundidad( raiz.izq) + 1 </li></ul><ul><li>} </li></ul>
  42. 42. Contar hojas. <ul><li>// Cuenta hojas de un árbol </li></ul><ul><li>public int contarHojas (Nodo raiz) { </li></ul><ul><li>if (raiz = = null) return 0; </li></ul><ul><li>If ((raiz.der == null) && (raiz.izq == null)) </li></ul><ul><li>Return 1; </li></ul><ul><li>else </li></ul><ul><li>return contarHojas (raiz.izq) + contarHojas (raiz.der) </li></ul><ul><li>} </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×