dit te doen een " traversal " van een binaire boom in Java betekent om een algoritmische verwerking van de knooppunten in een soort van orde te doen. Een " preorder " traversal betekent dat de root- knooppunt voor het eerst wordt verwerkt , en dan de rest van de boom knopen worden recursief verwerkt . De traversal functie zal eenvoudig elk knooppunt het bezoeken aan de console af te drukken . Instructies 1 Maak een eenvoudige binaire zoekboom klasse die een eenvoudige constructor welke waarde het knooppunt geïnitialiseerd heeft . Ook inbegrepen moet een insert methode om een boom te doorkruisen en een nieuw knooppunt op de juiste plaats te zijn . " " public class BinaryTree { BinaryTree links; BinaryTree rechts; int waarde ; openbare BinaryTree ( int v ) { waarde = v ; } //Plaats een waarde in de boom public void insert ( int v ) { if ( v if ( links = = null ) links = new BinaryTree ( v ) ; anders left.insert ( v ) ; } else if ( v > value ) { if ( rechts == null ) rechts = new BinaryTree ( v ) ; anders right.insert ( v ) ; . } } } " " kopen van 2 Construct het hoofdknooppunt van de binaire boom , het toewijzen van een waarde die in de buurt van het gemiddelde van de van de objecten die je zult opslaan Dit zal zorgen voor efficiëntie , aangezien uw binaire boom nodig heeft om redelijk evenwichtig te zijn Als je het opslaan van een verdeling van de getallen van 1 tot 100 , bijvoorbeeld , 50 is een goede waarde voor de root- knooppunt " " BinaryTree b = new BinaryTree ( 50 ) ; " . '. 3 Insert nodes in de boom in een bepaalde volgorde . de binaire boom is niet auto- balancing , dus het plaatsen van knooppunten in een bepaalde volgorde helpt om het evenwicht te behouden . Hier de knooppunten zijn plaats een korte en efficiënte evenwichtige tree make " " 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 Doe een preorder traversal met het doorkruisen van de de wortel knoop eerst, dan de linker boom en uiteindelijk de juiste boom . het is gemakkelijk om dit recursief doen met een kleine binaire boom , omdat het niet een stack overflow . als uw binaire boom is zeer groot , moet de traversal functie worden gerealiseerd iteratief . 5 Voeg een nieuwe methode , preorder , aan de BinaryTree klasse . hier de methode drukt alleen de waarde van elk knooppunt het bezoekt . " " public void preorder ( ) { System.out.println ( waarde ) ; if ( links = null ! ) left.preorder ( ) if ( rechts = null ! ) right.preorder ( ) ;} " " 6 Roep de nieuwe methode na uw inserts naar de knooppunten in preorder print " " b.preorder ( ) ; " .
|