Árboles1UVM Árboles
2UVM
Árboles3UVM 6.1 Objetivos El estudiante manejará el tad Arbol, sobre memoria dinámica
Árboles4UVM 6.2 Temas a Cubrir Definición Operaciones sobre árboles binarios
Á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.
Árboles6UVM struct tnode { int data struct tnode *lchild,*rchild; };
Árboles7UVM 6.4 Recorridos de un árbol binario Inorder (LDR) Postorder (LRD) Preorder (DLR)
Árboles8UVM
Á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.
Árboles10UVM
Á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); }
Á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.