Selv om Java ikke gir et binært tre klasse i standard bibliotekene , er en grunnleggende binært tre klasse enkle nok til å bli presentert . A " traversering " av en datastruktur er en algoritme som besøker hver node gang . Dette er ofte implementert som en slags iterator (mye som en liste iterator ) eller metode som vil kalle en tilbakeringing metode for hver node . I Java , for å gjøre en " Postorder " traversering som vil besøke rotnoden siste , ingen tilbakekall eller iteratorer er nødvendig. Den traversering funksjonen vil bare skrive ut hver node det besøk til konsollen. Instruksjoner
en
Skriv en grunnleggende binært søketre klasse. Det er bare to metoder som må støttes på dette stadiet : en grunnleggende konstruktør som initialiserer nodens verdi , og et innstikk metode. Innsatsen metoden vil traversere et tre og opprette en ny node på riktig sted . " " public class BinærTre { BinærTre venstre ; BinærTre høyre , int verdi ; offentlig BinærTre ( int v) { value = v ;} //Sett inn en verdi i treet public void insert ( int v ) { if ( v if ( venstre = = null ) venstre = new BinærTre ( v ) , ellers left.insert ( v ); } else if ( v > verdi) {if (høyre == null ) høyre = new BinærTre ( v ) , ellers right.insert ( v ) .;} } " "
2
Opprett en forekomst av det binære treet som vil være rotnoden Hver node , selv rotnoden , må ha en verdi
3
Velg en verdi for rotnoden som er et sted i midten av objektene du skal lagre . for eksempel, hvis du lagrer en jevn fordeling av tallene fra 1 til 100, er 50 et godt valg for rotnoden Binære trær bør være så balansert som mulig, siden ubalanserte trær vokser ekstremt høy og er ikke veldig effektivt " " BinærTre b = new BinærTre ( 50 ), " . . "
4
Insert noen noder inn i treet. Siden dette treet er ikke auto - balansering , for å beholde balansen , bør noder settes inn i en bestemt rekkefølge . rekkefølgen i dette eksempelet koden er laget for å gjøre den korteste og mest effektive tre mulig. " " b . innsatsen ( 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 ), " "
5
Traverse treet, krysser venstre treet først , deretter den høyre treet, og deretter endelig rotnoden . Hvis rekursjon benyttes for å gjøre den Postorder traversering , er metoden bare tre linjer lange . i dette tilfellet vil stabelen bare vokse til høyden av treet. Ettersom treet er balansert og liten , rekursjon vil ikke overløp stabelen .
6
Legg til ny metode til BinærTre klasse kalt Postorder . Her er det bare skriver verdien av hver node det besøk . " " public void Postorder ( ) { if ( venstre ! = null ) left.postorder (); if ( høyre = null ) right.postorder (); ! System.out.println (verdi ); } " "
7
Skriv ut nodene i Postorder ved å ringe b.postorder metode etter dine inserts " " b.postorder (); " .