Binary træer er komplekse datastrukturer , der anvendes i edb-programmer til at gemme data i hukommelsen ved hjælp af en fælles storage algoritme. Ved at bruge denne type algoritme , kan data lagres i en stabil mønster , hvilket gør hentning og søge gennem data lettere. Java-programmører , der designe binære træer er mere end sandsynligt også designe algoritmer til at krydse disse datastrukturer. Der er tre måder at krydse binære træer : i orden , forudbestil , og post -order. Ting du skal
Java Development Kit ( JDK )
Text Editor
Vis Flere Instruktioner
1
Traverse det binære træ ved hjælp in-order traversal . Antages det, at klassen "BT " repræsenterer et binært træ , følgende kode viser, hvordan man udskriver træet i orden . Hvert knudepunkt har en venstre og højre pointer , der peger til venstre og højre knudepunkter i det aktuelle knudepunkt , sammen med et dataelement , der repræsenterer dens værdi . Den in -order traversal vil krydse venstre node først indtil ramme null, og udskriften den forælder node før gennemkører højre og starte forfra . Det betyder, at enhver node kun udskrive, hvis alle dens venstre side barn noder har udskrevet først : Hej
public class BT {
public void sigte ( Node x ) {
< p > if ( x == null) {return //stopper rekursion når der ikke er Node }
sigte ( x.left ) //altid krydse venstre firstprint x.data //udskrive data, når venstre node returnsinOrder ( x.right ) //travers til højre }
2
Traverse træet i pre -order. Denne ordre er magen til i orden , bortset fra at trykning af knudepunktet kommer før nogen traversal . Så vil noden udskrive dens værdi, og derefter krydse tilbage . Derefter , når rekursion tilbage til knudepunktet efter gennemkører venstre, vil knudepunktet derefter krydse højre . Det betyder, at node altid vil udskrive sig selv, før ethvert barn noder print : Hej
public void preorder ( Node x ) {
if ( x == null) {return //stopper rekursion når der er ingen Node }
print x.data //printinOrder ( x.left ) //travers leftinOrder ( x.right ) //travers til højre }
3
Traverse træet post- ordre. Dette er det modsatte af pre-order traversal . En node vil altid se til venstre eller højre Nodes før du udskriver selv, hvilket betyder, at alle andre barn noder under den udskrives først : Hej
public void Postorder ( Node x ) {
if ( x == null) {return //stopper rekursion når der ikke er Node }
sigte ( x.left ) //travers leftinOrder ( x.right ) //travers rightprint x.data //print }