Travaux pratiques: arbres binaires de recherche

Transcription

Travaux pratiques: arbres binaires de recherche
Algorithmique et application Java
Université Paris-Dauphine MIDO L2
Travaux pratiques: arbres binaires de recherche
Rappels de cours
Soit T un arbre. Si tout élément x ∈ T a au-plus deux ls, un ls
gauche g(x) et un ls droit d(x), alors T est un arbre binaire (on note g(x) ou d(x) = N IL
si le ls gauche ou droit n'existe pas, respectivement). Le sous-arbre Tx de T enraciné en
x ∈ T est l'arbre de racine x induit par tous les descendants de x dans T (si x n'existe pas,
alors Tx = ∅). L'arbre T est un arbre binaire de recherche si pour tout x ∈ T , y ∈ Tg(x) et
z ∈ Td(x) , on a y ≤ x ≤ z (où ≤ est une relation d'ordre totale sur T ).
1. Veuillez ouvrir la page http://www.lamsade.dauphine.fr/~lacour/algo/tp_04.
Importez dans un package tp_04 les chiers .java qui s'y trouvent.
2. Le but de la séance est d'implémenter quelques méthodes pour manipuler des arbres
binaires de recherche (binary search trees ). La représentation retenue pour ce type
d'objet est récursive et a été dénie dans la classe BinaryNode : prenez-en connaissance.
3. De plus, plusieurs méthodes pour manipuler ces objets ont déjà été implémentées dans
la classe BinarySearchTree. Lisez-les également (observez le fonctionnement des
méthodes insert, find, remove...). Notez l'usage de l'interface générique Comparable
et de la méthode compareTo: x.compareTo( t.element ) < 0 si x est plus petit que
t.element.
Quelle est la caractéristique commune de toutes ces méthodes?
4. Implémentez (et testez) les méthodes suivantes dans BinarySearchTree:
public String toString (BinaryNode t) représente t dans une chaîne de caractères pour l'achage
public void inOrder( BinaryNode t ) ache t selon un parcours inxe
public boolean isSingleton( BinaryNode t ) teste si t est une feuille
public int numbLeaf( BinaryNode t ) retourne le nombre de feuilles du (sous)arbre t
public int numbNodes( BinaryNode t ) retourne le nombre de n÷uds du (sous)arbre t
public int height( BinaryNode t ) retourne la hauteur d'un (sous-)arbre t
public int sDepth( BinaryNode t ) retourne la somme des profondeurs des n÷uds
internes du (sous-)arbre t
2010-2011
1

Documents pareils