Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct nodo{
- int valor;
- struct nodo* ptrHI;
- struct nodo* ptrHD;
- } TNodo;
- void crear_arbol(TNodo ** ptrRaiz);
- void inserta_nodo(TNodo **ptrRaiz, int valor);
- int niveles (TNodo**);
- void crear_arbol(TNodo ** ptrRaiz){
- *ptrRaiz = NULL;
- }
- void inserta_nodo(TNodo **ptrRaiz, int valor){
- TNodo *ptrHoja, *ptrRecorrido, *ptrPadre;
- ptrHoja = (TNodo*)malloc(sizeof(TNodo));
- ptrHoja->valor = valor;
- ptrHoja->ptrHI=ptrHoja->ptrHD=NULL;
- if(*ptrRaiz){
- ptrRecorrido = *ptrRaiz;
- ptrPadre = NULL;
- while (ptrRecorrido){
- ptrPadre = ptrRecorrido;
- if (ptrRecorrido->valor > valor)
- ptrRecorrido = ptrRecorrido->ptrHI;
- else
- ptrRecorrido = ptrRecorrido->ptrHD;
- }
- if (ptrPadre->valor > valor)
- ptrPadre->ptrHI = ptrHoja;
- else
- ptrPadre->ptrHD = ptrHoja;
- }
- else{
- *ptrRaiz = ptrHoja;
- }
- }
- int es_nodo_hoja(TNodo *ptrRaiz){
- if (ptrRaiz->ptrHI ==NULL) return 1;
- if (ptrRaiz->ptrHD ==NULL) return 1;
- return 0;
- }
- int niveles(TNodo** raiz){
- TNodo* aux=*raiz;TNodo*aux1;
- if (aux==NULL)
- return 0;
- else
- { aux1=aux->ptrHI;
- /* consigo el nivel de cada hijo */
- int lDepth = niveles(&aux1);
- aux1=aux->ptrHD;
- int rDepth = niveles(&aux1);
- /* verifico quien es mayor */
- if (lDepth > rDepth)
- return(lDepth+1);
- else return(rDepth+1);
- }
- }
- int main(int argc, char** argv) {
- TNodo *ptrRaiz;
- int nivel;
- crear_arbol(&ptrRaiz);
- inserta_nodo(&ptrRaiz, 15);
- inserta_nodo(&ptrRaiz, 10);
- inserta_nodo(&ptrRaiz, 17);
- inserta_nodo(&ptrRaiz, 19);
- inserta_nodo(&ptrRaiz, 16);
- inserta_nodo(&ptrRaiz, 5);
- inserta_nodo(&ptrRaiz, 14);
- inserta_nodo(&ptrRaiz, 20);
- nivel=niveles(&ptrRaiz);
- printf("%d\n",nivel);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement