(define (arbre:creer taillemax) (vector 'arbre 0 (make-vector (+ 1 taillemax)))) (define (arbre:taille T) (vector-ref T 1)) (define (arbre:tableau T) (vector-ref T 2)) (define (arbre:pere i) (quotient i 2)) (define (arbre:fils-gauche i) (* i 2)) (define (arbre:fils-droit i) (+ 1 (* 2 i))) (define (arbre:vide? T) (zero? (arbre:taille T))) (define (arbre:gauche-vide? T i) (> (arbre:fils-gauche i) (arbre:taille T))) (define (arbre:droit-vide? T i) (> (arbre:fils-droit i) (arbre:taille T))) (define (arbre:permute! T i j) (let ((tmp (vector-ref T i))) (vector-set! T i (vector-ref T j)) (vector-set! T j tmp)))