La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Árboles1UVM Árboles. 2UVM Árboles3UVM 6.1 Objetivos El estudiante manejará el tad Arbol, sobre memoria dinámica.

Presentaciones similares


Presentación del tema: "Árboles1UVM Árboles. 2UVM Árboles3UVM 6.1 Objetivos El estudiante manejará el tad Arbol, sobre memoria dinámica."— Transcripción de la presentación:

1 Árboles1UVM Árboles

2 2UVM

3 Árboles3UVM 6.1 Objetivos El estudiante manejará el tad Arbol, sobre memoria dinámica

4 Árboles4UVM 6.2 Temas a Cubrir Definición Operaciones sobre árboles binarios

5 Árboles5UVM 6.3 Definición Un árbol binario es un conjunto finito de elementos que está vacío o está dividido en tres subconjuntos de elementos separados. El primer elemento contiene un elemento único llamado raíz del árbol. Los otros dos subconjuntos son por sí mismos árboles binarios conocidos como subárboles izquierdo y derecho. Cada elemento de un árbol binario se denomina nodo del árbol.

6 Árboles6UVM struct tnode { int data struct tnode *lchild,*rchild; };

7 Árboles7UVM 6.4 Recorridos de un árbol binario Inorder (LDR) Postorder (LRD) Preorder (DLR)

8 Árboles8UVM

9 Árboles9UVM 6.5 Árbol de Búsqueda binario Un árbol de búsqueda binario es un árbol binario que puede estar vacío y que cada nodo contiene un identificador. El identificador de cualquier nodo en el subárbol izquierdo es menor que el de la raíz. El identificador de cualquier nodo en el subárbol derecho es mayor que la raíz. Tanto el subárbol izquierdo como el derecho son árboles de búsqueda binaros.

10 Árboles10UVM

11 Árboles11UVM struct tnode *insert(struct tnode *p, int val) { struct tnode *temp1,*temp2; if(p == NULL) { p = (struct tnode *) malloc(sizeof(struct tnode)); /* insert the new node as root node*/ if(p == NULL) { printf("Cannot allocate\n"); exit(0); } p->data = val; p->lchild=p->rchild=NULL; } else { temp1 = p; /* traverse the tree to get a pointer to that node whose child will be the newly created node*/ while(temp1 != NULL) { temp2 = temp1; if( temp1 ->data > val) temp1 = temp1->lchild; else temp1 = temp1->rchild; } if( temp2->data > val) { temp2->lchild = (struct tnode*)malloc(sizeof(struct tnode)); /*inserts the newly created node as left child*/ temp2 = temp2->lchild; if(temp2 == NULL) { printf("Cannot allocate\n"); exit(0); } temp2->data = val; temp2->lchild=temp2->rchild = NULL; } else { temp2->rchild = (struct tnode*)malloc(sizeof(struct tnode)); /*inserts the newly created node as left child*/ temp2 = temp2->rchild; if(temp2 == NULL) { printf("Cannot allocate\n"); exit(0); } temp2->data = val; temp2->lchild=temp2->rchild = NULL; } return(p); }

12 Árboles12UVM Tarea #6 (entrega 31 Marzo 2009) Escriba un programa en C que guarde en una lista ligada los datos de varias personas (nombre y edad) de manera que los elementos de la lista se inserten de menor a mayor edad.


Descargar ppt "Árboles1UVM Árboles. 2UVM Árboles3UVM 6.1 Objetivos El estudiante manejará el tad Arbol, sobre memoria dinámica."

Presentaciones similares


Anuncios Google