Java har inte ett binärt träd klass , men det är enkelt att presentera en version av datastruktur för att göra en inorder traversering . A " traversal " av ett binärt träd är en standardiserad procedur för att besöka varje nod på den binära trädstrukturen en gång . En inorder traversering kommer att göra detta i sorterad ordning . Traversal införs ofta som någon sorts iterator (som en lista iterator ) eller genom en metod som kommer att kalla en callback-metoden för varje nod . Du kan dock göra detta utan att använda återbesök eller iteratorer , i stället skriva till konsolen varje nod besökt . Instruktioner
1
Skapa en grundläggande binära klass sökträd . Vid denna punkt , behöver du bara en grundläggande konstruktormetod som initierar nodens värde och en insats metod . Insatsen metod kommer passera ett träd och göra en ny nod på rätt plats . " " public class binaryTREE { binaryTREE vänster , binaryTREE höger , int value ; offentliga binaryTREE ( int v ) { value = v ; } //Sätt ett värde i trädet public void insert ( int v ) {if ( v om ( vänster = = null ) vänster = ny binaryTREE ( v ) , annars left.insert ( v ) ;} else if ( v > värde ) {if ( höger == null ) höger = ny binaryTREE ( v ) , annars right.insert ( v ) , . . } } } " "
2
Skapa instansen ( nod ) i det binära trädet som blir roten noden Precis som alla andra nod behöver rotnoden att ha ett värde det är oftast bäst att välja ett värde nära medianen av de objekt du lagrar , som binära träd bör vara så balanserad som möjligt " " binaryTREE b = ny binaryTREE ( 50 ) , " . " Addera 3 < . . p > Infoga noder i trädet i specifik för att behålla balansen , eftersom det binära trädet är inte automatisk balansering detta exempel skapar minsta trädet möjligt för att bibehålla 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
Flytta över trädet med en inorder traversering den vänstra träd genomkorsas först , följt av root noden , och sedan den högra trädet är . passeras . Använda rekursion , är koden bara tre rader . eftersom rekursion tar stackutrymme , bör det användas försiktigt . med en liten och balanserat binärt träd , rekursion kommer inte svämma bunten .
5
Lägg till en ny metod för Java binaryTREE klass som heter inorder " " public void inorder ( ) {if ( vänster = null ! ) left.inorder ( ) , . System.out.println ( value ) ; ! if ( höger = null ) right.inorder ( ) ;} " "
6
Ring inorder metoden efter dina insatser för att skriva ut noderna i sorterad ordning . " " b.inorder ( ) ; "
Addera