Advertisement
disiodj

ALBERI_ESERCIZI_2_DA SOLO

Dec 7th, 2015
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.50 KB | None | 0 0
  1. PARENTETICA-SIMMETRICA((t) //stampa l'albero
  2. PARENTETICARIC(t.root);
  3.  
  4. PARENTETICARIC(t)
  5. if(t==NULL)
  6. return;
  7. else
  8. if(PARENTETICARIC(t.left)==FALSE)
  9. PRINT("t.info");
  10. return;
  11. else
  12. PARENTETICARIC(t.left);
  13. PARENTETICARIC(t.right);
  14. return;
  15.  
  16. --------------------------------------------------------------------
  17. PARENTETICA-PREORDINE(t)
  18. PARENTETICARIC(t.root)
  19.  
  20. PARENTETICARIC(n)
  21. if(n==null)
  22. return
  23. else
  24. print("(")
  25. PARENTETICARIC(n.left);
  26. print(n.info);
  27. PARENTETICARIC(n.right);
  28. print (")");
  29. return;
  30. ------------------------------------------------------------------------------
  31. //CHIEDI se giusto
  32. VALORE-NONNO(t)
  33. if(t.root==null)
  34. return 0;
  35. return VALORERIC(t.root)
  36.  
  37. VALORE-RIC(t)
  38. if(t==null)
  39. return 0;
  40. else
  41. cont =(CALCOLAVALORE(t.left.left, t.info) + CALCOLAVALORE(t.right.right, t.info)+CALCOLAVALORE(t.left.right, t.info)+CALCOLAVALORE(t.right.left, t.info);
  42. cont = cont+VALORERIC(t.left);
  43. cont = cont+VALORERIC(t.right);
  44. return cont;
  45.  
  46. CALCOLAVALORE(,n)
  47. if(t==null)
  48. return 0;
  49. if(n==t.info)
  50. return 1;
  51. else
  52. return 0;
  53.  
  54. ------------------------------------------------------------------------------
  55. //CHIEDI se giusto
  56. DUE-FIGLI(t)
  57. return DUE-FIGLIRIC(t.root)
  58.  
  59. DUE-FIGLIRIC(n)
  60. if(t==null)
  61. return 0;
  62. else
  63. if(T.left!=null && t.right!=NULL)
  64. return cont = 1+DUE-FIGLI(t.left)+DUE-FIGLI(t.right);
  65. if(t.left!=NULL)
  66. return DUE-FIGLI(t.left);
  67. else
  68. return DUE-FIGLI(t.right);
  69.  
  70. --------------------------------------------------------------------------
  71.  
  72. QUATTRO-NIPOTI(t)
  73. return QUATTRO-NIPOTI-RIC(t.root);
  74.  
  75. QUATTRO-NIPOTI-RIC(t)
  76. if(t==null)
  77. return 0;
  78. if(t.left!=null && t.right!=null){
  79. k = DUE-FIGLI(t.right)+DUE-FIGLI(t.left);
  80. return k+QUATTRONIPOTI(t.left)+QUATTRONIPOTI(t.right);
  81. }
  82. return QUATTRONIPOTI(t.left)+QUATTRONIPOTI(t.right);
  83.  
  84. DUE-FIGLI-Versione-2(t)
  85. if(t==null)
  86. return 0;
  87. if(t.left!=NULL && t.right!=NULL)
  88. return 1
  89. return 0;
  90.  
  91. --------------------------------------------------------------------------------
  92.  
  93. CAMMINO(t, n)
  94. //L è una nuova lista doppiamente concatenata
  95. L = CAMMINO-RIC(t.root, n)
  96. if(L!==NULL)
  97. l.head = NULL;
  98. return l;
  99. return L;
  100.  
  101. CAMMINO-RIC(t, n)
  102. if(t==NULL)
  103. return NULL;
  104. if(t.info==n);
  105. l.head = NULL;
  106. temp.info = u;
  107. temp.prev =NULL;
  108. temp.next=NULL;
  109. l.head = temp;
  110. return l;
  111. l = CAMMINO-RIC(t.left, n)
  112. r = CAMMINO-RIC(t.right, n)
  113. if(l!=NULL)
  114. temp.info = t.info;
  115. AggiungiInTesta(L, temp)
  116. return L;
  117. if(r!=NULL)
  118. temp.info=t.info;
  119. AggiungiInTesta(L, temp)
  120. return L
  121. return NULL;
  122. }
  123.  
  124. AggiungiInTesta(L, n)
  125. if(l.head == NULL)
  126. //temp è un nuovo nodo
  127. temp.info = n;
  128. temp.prev =null;
  129. temp.next =NULL;
  130. L.head = temp;
  131. return l;
  132. temp.info = n;
  133. temp.next = l.head;
  134. temp.prev = NULL;
  135. l.head.prev = temp;
  136. l.head = temp;
  137. return l;
  138.  
  139.  
  140. ----------------------------------------------------------------------------------------------------
  141.  
  142. PARENTELA(n1,n2){
  143. //t è l'albero considerato
  144. L1 = CAMMINO(T, n1);
  145. L2 = CAMMINO(T, N2)
  146. return SCORRI-LISTE(L1, L2);
  147. }
  148.  
  149. SCORRI-LISTE(L1, L2) //ritorna un numero con la lunghezza dei cammini delle due liste.
  150. while(L1==L2 && L1!=NULL && L2!=null){
  151. L1 = L1.next
  152. L2 = L2.next;
  153. }
  154. ContL1 = 0;
  155. ContL1 = 0;
  156. if(L1!=NULL)
  157. ContL1 = CONTA-RIMANENTE(L1);
  158. if(L2!=NULL)
  159. ContL2 = CONTA-RIMANENTE(L1);
  160. return ContL1+ContL2;
  161.  
  162. CONTA-RIMANENTE(L){
  163. temp = L;
  164. while(temp!=NULL)
  165. cont++
  166. temp = temp.next;
  167. return cont;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement