Hoe om te doen Inorder Traversal in Binary Tree in Java

Java heeft geen binaire boom klasse, hoewel het eenvoudig om een ​​versie van de gegevensstructuur presenteren aan een inorder traversal doen.Een "traversal" van een binaire boom is een toverspreuk procedure voor een bezoek aan elk knooppunt op de binaire boom een ​​keer.Een inorder traversal zal dit doen in gesorteerde volgorde.Traversal wordt vaak uitgevoerd als een soort van iterator (zoals een lijst iterator) of door een methode die een callback methode voor elk knooppunt zullen noemen.U kunt echter, dit doen zonder gebruik te maken callbacks of iterators, in plaats daarvan het afdrukken naar de console elk knooppunt bezocht.

instructies

  1. Maak een eenvoudige binaire zoekboom klasse.Op dit punt, zal u alleen een basis constructormethode dat de waarde van het knooppunt geïnitialiseerd en een insert methode nodig.De insert methode zal een boom doorkruisen en maak een nieuw knooppunt in de juiste plaats."" public class BinaryTree {
    BinaryTree verlaten;
    BinaryTree recht;
    int waarde;

    openbare BinaryTree (int v) {
    value = v;
    }

    // Breng een waarde in de boom
    public void insert (int v) {
    if (v & lt; value) {
    if (links == null)
    links = new BinaryTree (v);
    anders
    left.insert (v);
    }

    anders als (v & gt; value) {
    if (rechts == null)
    rechts = new BinaryTree (v);
    anders
    right.insert (v);
    }

    }} ""

  2. Maak de instantie (knooppunt) van de binaire boom die de root node zal zijn.Net als elke andere knooppunt, de root node moet een waarde hebben.Het is meestal het beste om een ​​waarde in de buurt van de mediaan van de objecten die je opslaan kiest, als binaire bomen zo evenwichtig mogelijk moet zijn."" BinaryTree b = new BinaryTree (50); "" nodes

  3. inzetstuk in de boom in specifieke om het evenwicht te behouden, aangezien deze binaire boom niet automatisch balanceren.Dit voorbeeld maakt de kleinste boom mogelijk met het oog op efficiëntie te handhaven "" b.insert (20).;
    b.insert (40);
    b.insert (10);
    b.insert (5);
    b.insert (45);

    b.insert (70);
    b.insert (60);
    b.insert (80);
    b.insert (55);
    b.insert (85); ""

  4. Move over de boom met behulp van een inorder traversal.De linker boom wordt eerst doorlopen, gevolgd door de wortel knooppunt, en dan de juiste boom wordt doorkruist.Met behulp van recursie, de code slechts drie lijnen.Aangezien recursie neemt stackruimte, moet zorgvuldig worden gebruikt.Met een kleine en evenwichtige binaire boom, zal recursie niet overstromen de stapel.

  5. Voeg een nieuwe methode om de Java-klasse BinaryTree inorder genoemd.
    "" public void inorder () {
    if (links = null!) Left.inorder ();
    System.out.println (waarde);
    if (rechts = null!) Right.inorder ();
    } ""

  6. Bel de inorder methode na de inserts om de knopen te drukken in gesorteerde volgorde. "" B.inorder (); "

Tips & amp; Waarschuwingen

  • Methodes als een "delete knooppunt" methode worden niet ondersteund door dit voorbeeld klasse
  • In dit voorbeeld van inorder traversal, zal de stapel alleen maar groeien tot de hoogte van de boom, zodat de stapel gewonnen '.t overflow. Als uw binaire boom is erg groot, de traversal functie moet worden iteratief uitgevoerd.
  • Zoals met elke andere programmeertaal, kunnen onevenwichtige binaire bomen in Java erg lang worden en zijn niet effectief.
304
0
1
Programmeren In Java