disiodj

ABR Definizioni

Dec 27th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. ALBERI BINARI DI RICERCA - TEORIA
  2.  
  3. //Creazione nuovo nodo
  4. MK-TREE-ELEM(k) //passo un valore k al nuovo nodo da creare.
  5. x.p = x.right = x.left = null;
  6. x.key = k;
  7. return x;
  8.  
  9. INSERISCI(t,k){
  10. if(t.root == NULL)
  11. t = MK-TREE-ELEM(k); //Questa operazione mi stavo dimenticando di farla, attento
  12. return t;
  13. else
  14. return BST-INSERISCI(t.root, k)
  15. }
  16.  
  17. BST-INSERISCI(x, k){
  18. output = FALSE;
  19. if(x.key>k)
  20. if(x.left ==NULL){
  21. x.left = MK-TREE-ELEM(k);
  22. x.left.p = x;
  23. output = TRUE;
  24. }
  25. else{
  26. BST-INSERISCI(x.left);
  27. if(x.key<k){
  28. if(x.right==NULL)
  29. x.right = MK-TREE-ELEM(k);
  30. x.right.p = x;
  31. output = TRUE;
  32. }
  33. else{
  34. BST-INSERISCI(x.right);
  35. return output;
  36. ------------------------------------------------------------------------------------------------
  37. //Minimo, Massimo - Versione MIA
  38. MINIMO(x){
  39. if(x.left ==NULL)
  40. return x;
  41. else
  42. return MINIMO(x.left);
  43.  
  44. //Il massimo è la stessa cosa del Minimo, fai tu.
  45.  
  46. //Cancellazione di un nodo in un albero..... QUESTO PROPRIO NON MI ENTRA IN TESTA, STUDIALO CON VARI ALBERI E CASI.
  47. TREE-DELETE(t, x){
  48. if(x.left != NULL) && (x.right!=NULL){
  49. y = MINIMO(x.right);
  50. x.key = y.key;
  51. else
  52. y = x;
  53. TREE-BYPASS(t, y);
  54. }
  55. //La complessità di Tree-Delete è Teta(h). Penso poichè La complessita di Minimo è Teta(h);
  56. TREE-BYPASS(t, y){
  57. if(y.right !=NULL){
  58. figlio = y.right;
  59. else
  60. figlio = y.left;
  61. if(FIGLIO!=NULL){
  62. figlio.p = X.P;
  63. if(x == x.p.left){
  64. x.p.left = FIGLIO;
  65. else
  66. x.p.right = FIGLIO;
  67. La complessità di TREE-BYPASS è Teta(1)
  68. ------------------------------------------------------------------------------------------------------------
  69. //Ricerca di un elem
  70. RICERCA-ITERATIVA(x,k)
  71. while(x!=null or x.key !=k)
  72. if(x.key>k)
  73. x = x.left;
  74. else
  75. x = x.right;
  76. return x;
  77.  
  78. RICERCA-RICORSIVA(x,k)
  79. if(x== null or x.key == k)
  80. return x;
  81. else
  82. if(x.key>k)
  83. return RICERCA-RICORSIVA(x.left, k);
  84. else
  85. return RICERCA-RICORSIVA(x.right, k);
  86.  
  87.  
  88. --------------------------------------------------------------------------------------------
  89.  
  90. TREE-TO-ARRAY(A, x, i){
  91. if(x==NULL)
  92. return i;
  93. i = TREE-TO-ARRAY(A,x.left, i);
  94. A[i] = x.key;
  95. i = TREE-TO-ARRAY(A, x.right, i+1);
  96. return i;
Add Comment
Please, Sign In to add comment