Arbres binaires complets - PowerPoint PPT Presentation

About This Presentation
Title:

Arbres binaires complets

Description:

Arbres binaires complets Arbre binaire plein : Chaque n ud poss de 0 ou 2 enfants. Arbre binaire complet: Si la hauteur de l arbre est d, alors les d-1 premiers ... – PowerPoint PPT presentation

Number of Views:162
Avg rating:3.0/5.0
Slides: 16
Provided by: Cliff177
Category:

less

Transcript and Presenter's Notes

Title: Arbres binaires complets


1
Arbres binaires complets
  • Arbre binaire plein Chaque nœud possède 0 ou 2
    enfants.
  • Arbre binaire complet Si la hauteur de larbre
    est d, alors les d-1 premiers niveaux sont
    complets. Les nœuds du dernier niveau sont tous
    à gauche.

2
Théorème des arbres pleins (1)
  • Theorème Le nombre de feuilles dans un arbre
    binaire plein est un de plus que le nombre de
    nœuds internes.
  • Preuve (par induction mathématique)
  • Base Avec un seul nœud interne, on a deux
    feuilles.
  • Hypothèse dinduction Supposons que tous les
    arbres binaires pleins avec n-1 nœuds internes
    possèdent n feuilles.

3
Théorème des arbres pleins (2)
  • Pas dinduction Étant donné un arbre binaire
    plein avec n nœuds internes, on choisit un nœud
    interne I avec 2 enfants. On enlève les enfants
    de I pour obtenir un arbre T.
  • Par hypothèse dinduction, T est un arbre
    binaire plein avec n feuilles.
  • Si on replace les deux enfants de I, le nombre de
    nœuds internes augmente de 1 et le nombre de
    feuilles augmente de 1.

4
Arbre binaire complets (1)
5
Arbre binaire complets(2)
  • Parent (r) ?(r-1)/2? si r?0
  • Leftchild(r) 2r1 si 2r1 lt n
  • Rightchild(r) 2r2 si 2r2 lt n
  • Leftsibling(r) r-1 si rgt0 est pair
  • Rightsibling(r) r1 si r?n est impair

6
Monceau (heap)
  • Monceau (ou tas) Arbre binaire complet possédant
    la propriété suivante
  • Monceau-min La valeur dun nœud est plus petite
    que la valeur de ses enfants.
  • Monceau-max La valeur dun nœud est plus grande
    que la valeur de ses enfants.
  • Les valeurs sont partiellement ordonnées.
  • ReprésentationTableau.

7
Monceau TDA
  • templateltclass Elemgt class maxheap
  • private
  • Elem Heap
  • int size
  • int n
  • void siftdown(int)
  • public
  • maxheap(Elem h, int num, int max)
  • int heapsize() const
  • bool isLeaf(int pos) const
  • int leftchild(int pos) const
  • int rightchild(int pos) const
  • int parent(int pos) const
  • bool insert(const Elem)
  • bool removemax(Elem)
  • bool remove(int, Elem)
  • void buildHeap()

8
Insérer un élémement
template ltclass Elemgt bool maxheapltElemgtinsert(c
onst Elem val) if (n gt size) return
false int curr n Heapcurr val
while ( (curr!0)
(Heapcurr gt Heapparent(curr) )
swap(Heap, curr, parent(curr)) curr
parent(curr) return true
9
Enlever la valeur maximum
  • template ltclass Elemgt
  • bool maxheapltElemgtremovemax(Elem it)
  • if (n 0) return false
  • swap(Heap, 0, --n)
  • if (n ! 0) siftdown(0)
  • it Heapn
  • return true

10
Siftdown (1)
  • template ltclass Elemgt
  • void maxheapltElemgtsiftdown(int pos)
  • while (!isLeaf(pos))
  • int j leftchild(pos)
  • int rc rightchild(pos)
  • if ((rcltn) (Heapj?Heaprc))
  • j rc
  • if (Heappos?Heapj) return
  • swap(Heap, pos, j)
  • pos j

11
Construire le monceau
  • (a) (4-2) (4-1) (2-1) (5-2) (5-4) (6-3) (6-5)
    (7-5) (7-6)
  • (b) (5-2), (7-3), (7-1), (6-1)

12
Siftdown (2)
13
Coût pour construire un monceau
  • Pour construire le monceau rapidement
  • On commence au bas de larbre.
  • On appelle siftdown pour chaque noeud.
  • Inutile dappeler siftdown pour les feuilles.
  • log n
  • ? (i - 1) n/2i ?(n).
  • i1
  • car

14
Tri par monceau (1)
  • template ltclass Elemgt
  • void heapsort(Elem A, int n)
  • Elem mval
  • maxheapltElemgt H(A, n, n)
  • for (int i0 iltn i)
  • H.removemax(mval)

15
Tri par monceau (2)
  • template ltclass Elemgt
  • void sort(Elem array, int n)
  • heapsortltElemgt(array, n)
  • Temps ?(n log n)
Write a Comment
User Comments (0)
About PowerShow.com