Advertisement
eduardovp97

ex14.c

Nov 14th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.09 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "tree.h"
  4.  
  5. #define N 20
  6.  
  7. int max(int a, int b);
  8. int ancestro(TNode *node, TData a, TData b);
  9. int esta(TNode *node, TData x);
  10.  
  11. int main(){
  12.    
  13.     TTree arbol;
  14.     crearArbol(&arbol);
  15.     insertar(&arbol,15);
  16.     insertar(&arbol,6);
  17.     insertar(&arbol,3);
  18.     insertar(&arbol,1);
  19.     insertar(&arbol,4);
  20.     insertar(&arbol,9);
  21.     insertar(&arbol,7);
  22.     insertar(&arbol,12);
  23.     insertar(&arbol,20);
  24.     insertar(&arbol,18);
  25.     insertar(&arbol,24);
  26.     insertar(&arbol,17);  
  27.  
  28.     printf("%d\n",ancestro(arbol.root,18,18));
  29.  
  30.     return 0;
  31. }
  32.  
  33. int max(int a, int b){
  34.     if(a>b)
  35.         return a;
  36.     return b;
  37. }
  38.  
  39. int ancestro(TNode *node, TData a, TData b){
  40.     if(node == NULL)
  41.         return -1;
  42.     if(esta(node->izq,a) && esta(node->der,b))
  43.         return node->info;
  44.     if(esta(node->izq,b) && esta(node->der,a))
  45.         return node->info; 
  46.     return max(ancestro(node->izq,a,b),ancestro(node->der,a,b));
  47.  
  48. }
  49.  
  50. int esta(TNode *node, TData x){
  51.     if(node == NULL)
  52.         return 0;
  53.     if(node->info == x)
  54.         return 1;
  55.     return (esta(node->izq,x) || esta(node->der,x));
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement