Bien que Java ne fournit pas une classe d'arbre binaire dans les bibliothèques par défaut , une classe d' arbre binaire de base est assez simple pour être présenté . Un " traversée " d'une structure de données est un algorithme qui rend chaque noeud une fois . Ce changement intervient souvent comme une sorte de iterator (un peu comme une liste iterator ) ou une méthode qui va appeler une méthode de rappel pour chaque noeud. En Java, de faire un " postorder " traversée qui se rendra le nœud racine dernier , aucun des rappels ou des itérateurs sont nécessaires. La fonction traversée sera simplement imprimer chaque nœud , il se rend à la console. Instructions 1 Ecrire une recherche classe d' arbre binaire de base. Il n'y a que deux méthodes qui doivent être pris en charge à ce stade : un constructeur de base qui initialise la valeur du noeud , et une méthode d'insertion. La méthode d'insertion va traverser un arbre et créer un nouveau nœud au bon endroit . "" public class BinaryTree { BinaryTree gauche ; BinaryTree droit ; int valeur ; publique BinaryTree (int v) {valeur = v ;} //insérer une valeur dans l'arbre insert public void (int v) {if (v if ( gauche = = null) gauche = new BinaryTree ( v); d'autre left.insert ( v); } else if ( v> value) { if ( droite == null) à droite = new BinaryTree ( v); d'autre right.insert ( v) ; . }} " " 2 Créer une instance de l'arbre binaire qui sera le nœud racine Chaque noeud, même le nœud racine , doit avoir une valeur < br . > 3 Choisissez une valeur pour le noeud racine qui est quelque part au milieu des objets que vous serez de stockage. par exemple, si vous stockez une répartition uniforme des nombres de 1 à 100 , 50 est un bon choix pour le nœud racine des arbres binaires doivent être aussi équilibrée que possible, car les arbres poussent extrêmement déséquilibrés grand et ne sont pas très efficaces "" BinaryTree b = new BinaryTree (50); " . " 4 Insertion. certains nœuds dans l'arbre. Depuis cet arbre n'est pas auto- équilibrage , pour conserver l'équilibre , les nœuds doivent être insérés dans un ordre précis . l'ordre dans cet exemple de code est conçu pour rendre l'arbre plus court et le plus efficace possible. "" b . insert (20); b.Insérez (40); b.Insérez (10); b.Insérez (5); b.Insérez (45); b.Insérez (70); b.Insérez (60); b.Insérez (80); b.Insérez (55); b.Insérez (85); "" 5 parcourir l'arborescence , parcourant l'arborescence de gauche en premier, suivi par le bon arbre , et puis finalement le nœud racine. Si la récursivité est utilisée pour faire le parcours postfixe , la méthode est à seulement trois lignes. Dans ce cas, la pile ne fera que croître à la hauteur de l'arbre . Depuis l'arbre est équilibré et petit , la récursivité ne débordera la pile. 6 Ajouter nouvelle méthode à la classe BinaryTree appelé postorder . ici, il imprime uniquement la valeur de chaque nœud sur lequel il se rend . "" postorder public void () {if (à gauche ! = null ) left.postorder (); if ( droite = null) right.postorder (); ! System.out.println ( value); } "" 7 Imprimer les nœuds postorder en appelant la méthode de b.postorder après vos inserts "" de b.postorder (); " .
|