Final Flashcards
(29 cards)
∑q^i
s=(q^(n+1)-1) / (q-1)
tip: s=… qs=… s-qs=…
Insertion dans une pile ordonnée
Insérer(P,x) Si pilevide(P) ou x < P[sommet[P]] alors empiler(P,x) sinon y:=depiler(P); insérer(P,x); empiler(P,y)
File, vide ? pleine ?
Vide : Tete[F] = Queue[F]
Pleine : Tete[F] = (Queue[F] + 1) % longueur[F]
Parcours infixe (dans l’ordre)
Parcours_infixe(x) Si x <> nil alors Parcours_infixe(gauche[x]) Imprimer clé[x] Parcours_infixe(droit[x])
Nombre de noeuds internes (arbre binaire complet de hauteur h)
2^h -1
∑i, ∑k.i
∑k.i = k∑ = k.n(n+1)/2
tip: # of terms, 2s=…
ABR : Rechercher(x, k)
Si x=nil ou k=cle[x] retourner x
sinon si k < cle[x] alors retourner Rechercher(gauche[x], k)
Sinon retourner Rechercher(droit[x], k)
ABR : Minimum(x)
Tant que gauche[x] <> nil x=gauche[x]
Retourner x
ABR : Successeur(x)
Si droit[x]<>nil retourner Minimum(droit[x]) y = pere[x] Tant que y <> nil et x=droit(y) x=y; y=pere[y] Retourner y
ABR : Insérer(T,z)
y=nil; x=racine[T] Tant que x <> nil y = x si clé[z] < clé[x] x=gauche[x] sinon x=droit[x] pere[z] = y Si y=nil racine[T] = z sinon si clé[z] < cle[y] alors gauche[y] = z sinon droit[y] = z
ABR : Suppression
Si aucun fils, supprimer.
Si 1 fils, raccorder.
Si 2 fils, remplacer par le minimum de droit[x] puis supprimer ce minimum
H-équilibré
Si pour tout x, |equilibre[x]| <= 1
equilibre(x) = hauteur(droit(x)) - hauteur(gauche(x))
(hauteur(x) = 1, hauteur(nil) = -1
ABR : Rotd(A, x)
Si x<>nil et gauche[x]<>nil alors y = gauche[x] c = droit[y] pere[y] = pere[x] Si pere[x] <> nil alors si x=gauche[pere[x]] alors gauche[pere[x]] = y sinon droit[pere[x]] = y Sinon racine[A] = y droit[y] = x pere[x] = y gauche[x] = c Si c<>nil alors pere[c] = x
ABR : enraciner(racine, e)
Si cle[racine] = e alors retourner racine Si clé[racine] > e alors enraciner(gauche[racine], e) retourner Rotd(racine) Si clé[racine] < e alors enraciner(droit[racine], e) retourner Rotg(racine) Complexité O(h) = O(n)
max(A,B) + C
C - max(A,B)
max(A,B)
= max(A+C, B+C)
= - max(A-C,B-C)
= - min(-A,-B)
Rotation gauche-droite
x/y-E/B-z/C-D puis x/z-E/y-D/B-C puis z/y-x/B-C-D-E
Propriétés tas
T[1] racine. Fils de T[i] : T[2i] et T[2i+1]
T[i] <= ses fils, père de T[i] = T[i/2]
Arbre binaire parfait de taille n. Si 2*i = n alors i n’a qu’un fils. Tous les éléments i > n/2 sont des feuilles.
Tas : entasser(A,i)
Gauche et droit sont des tas. l = gauche(i) r = droit(i) Si l<=taille[A] et A[l] > A[i] alors max = l sinon max = l Si r <= taille[A] et A[r] > A[max] alors max = r Si max ≠ i alors échanger(A[i], A[max]) entasser(A, max)
Tas : construire_tas(A)
taille[A] = longueur[A]
Pour i de longueur[A]/2 à 1 faire
entasser(A,i)
Complexité O(n) !
Tas : trier_tas(A)
Construire_tas(A) Pour i de longueur[A] à 2 faire échange(A[1], A[i]) taille[A] = taille[A] - 1 entasser(A,1) Complexité O(n.log(n))
Tas : extraire_max(A)
Si taille[A] < 1 erreur max = A[1] A[1] = A[taille[A]] taille[A] = taille[A] - 1 entasser(A,1) Retourner max Complexité O(log(n))
Nb min-max de sommets dans un tas de hauteur h
2^h min, 2^(h+1) -1 max (donc h ~log(n))
Tas : insérer_tas(A, cle)
taille[A] = taille[A] + 1 i = taille[A] Tant que i > 1 et A[Pere[i]] < clé faire A[i] = A[pere[i]] i = pere[i] A[i] = clé Complexité O(log(n))
Complexité tri comparatif
O(n.log(n))