Binære trær er komplekse datastrukturer som brukes i dataprogrammer til å lagre data i minnet ved hjelp av et felles lagring algoritme . Ved å bruke denne typen algoritme, kan data lagres i et stabilt mønster , noe som gjør hente og søke gjennom dataene enklere . Java-programmerere som utformer binære trær er mer enn sannsynlig også designe algoritmer for å traversere de datastrukturer. Det er tre måter å traversere binære trær : in -order , pre -order , og post- ordre . Du trenger
Java Development Kit ( JDK )
Text Editor
Vis flere instruksjoner
en
Traverse det binære treet ved bruk i for traversering . Forutsatt at klassen " BT " representerer et binært tre , viser følgende kode hvordan du skriver ut treet i -order. Hver node har en venstre og høyre peker som peker til venstre og høyre noder av gjeldende node , sammen med en data element som representerer sin verdi. Den in -order traversering vil krysse venstre node først til å treffe null, og print foreldrenoden før traversering rett og begynne på nytt . Det betyr at enhver node vil bare skrive ut hvis alle sine venstre side underordnede noder har skrevet første : en
public class BT {
public void Inorder ( Node x ) {
< p > if ( x == null ) {return ; //stopper rekursjon når det ikke er Node }
inorder ( x.left ), //alltid krysse igjen firstprint x.data ; //skrive ut dataene en gang venstre node returnsinOrder ( x.right ), //travers til høyre}
2
Traverse treet i pre -order. Denne ordren er lik i for , bortsett fra at utskrift av noden kommer før noen traversering . Så vil noden skrive sin verdi, og deretter krysse igjen . Deretter, når rekursjon returnerer til noden Etter å ha gjennomløpt venstre , vil noden deretter traversere høyre. Dette betyr at noden vil alltid skrive seg før alle barn noder print : en
public void preorder ( Node x ) {
if ( x == null ) {return ; //stopper rekursjon når det er ingen Node }
print x.data ; //printinOrder ( x.left ), //travers leftinOrder ( x.right ), //travers til høyre}
3
Traverse treet post- ordre. Dette er det motsatte av den pre -order traversering . En node vil alltid se til sine venstre eller høyre noder før du skriver selv, noe som betyr at alle andre barn noder under det vil skrive først : en
public void Postorder ( Node x ) {
if ( x == null ) {return ; //stopper rekursjon når det ikke er Node }
inorder ( x.left ), //travers leftinOrder ( x.right ), //travers rightprint x.data ; //print }