Sådan Gør Med sigte Traversal i binært træ i Java

Java har ikke en binært træ klasse, selvom det er nemt at præsentere en version af datastruktur til at gøre en sigte traversering.A "traversal" af et binært træ er et omkvæd procedure for at besøge hver node på binært træ én gang.En sigte traversal vil gøre dette i sorteret rækkefølge.Traversal er ofte implementeret som en slags iterator (ligesom en liste iterator) eller ved en metode, der vil kalde en callback metode til hvert knudepunkt.Du kan dog, gøre dette uden brug af tilbagekald eller iteratorer, i stedet at udskrive til konsollen hver node besøgt.

Instruktioner

  1. Opret en grundlæggende binær søgning træ klasse.På dette tidspunkt, vil du kun brug for en grundlæggende konstruktør metode, der initialiserer node værdi og en indsats metode.Indsatsen metode vil krydse et træ og lave en ny node på det rigtige sted."" public class BinaryTree {
    BinaryTree venstre;
    BinaryTree højre;
    int værdi;

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

    // Indsæt en værdi ind i træet
    public void indsats (int v) {
    hvis (v & lt; værdi) {
    hvis (venstre == null)
    venstre = ny BinaryTree (v);
    andet
    left.insert (v);
    }

    ellers hvis (v & gt; værdi) {
    hvis (højre == null)
    højre = nyt BinaryTree (v);
    ellers
    right.insert (v);
    }
    }
    } ""

  2. Opret instans (node) af det binære træ, der vil være roden node.Som enhver anden node, rodnoden skal have en værdi.Det er normalt bedst at vælge en værdi tæt på medianen af ​​de objekter, du lagring, som binære træer skal være så afbalanceret som muligt."" BinaryTree b = ny BinaryTree (50), ""

  3. Indsæt knuder i træet i bestemt rækkefølge for at bevare balancen, da denne binært træ er ikke auto-balancering.Dette eksempel opretter den mindst mulige træ med henblik på at opretholde effektivitet "" 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. Flyt på tværs af træet ved hjælp af en sigte traversering.Den venstre træet gennemløbes først, efterfulgt af rodnoden, og derefter den højre træet gennemløbes.Brug af rekursion, koden blot tre linjer.Men da rekursion tager stakplads, det skal anvendes med forsigtighed.Med en lille og afbalanceret binært træ, vil rekursion ikke flyde stakken.

  5. Tilføj en ny metode til Java BinaryTree klasse kaldet sigte.
    "" public void sigte () {
    hvis (= null venstre!) Left.inorder ();
    System.out.println (værdi);
    hvis (= null rigtige!) Right.inorder ();
    } ""

  6. Ring til sigte metoden efter dine indsatser for at udskrive noder i sorteret orden. "" B.inorder (); "

Tips & amp; Advarsler

  • metoder som en "slet node" metoden understøttes ikke af dette eksempel klasse
  • I dette eksempel på sigte traversering vil stakken kun vokse til højden af ​​træet, så stakken vundet «.t overløb. Hvis din binært træ er meget stor, den traversal funktionen bør gennemføres iterativt.
  • Som med enhver anden programmeringssprog, kan ubalanceret binære træer i Java bliver meget høje og er ineffektiv.
0
0
1
Java Programmering