Binära träd är komplexa datastrukturer som används i datorprogram för att lagra data i minnet med hjälp av en gemensam lagring algoritm . Genom att använda denna typ av algoritm , kan data lagras i ett stabilt mönster , vilket gör hämtning och söka igenom data enklare . Java programmerare som designar binära träd är mer än sannolikt också konstruera algoritmer för att korsa dessa datastrukturer . Det finns tre sätt att färdas binära träd : i - ordning , pre - order , och post- order . Saker du behöver Review, Java Development Kit ( JDK ) katalog Textredigeraren
Visa fler instruktioner
1
Traverse det binära trädet med i - ordning traversering . Förutsatt att klassen " BT " representerar ett binärt träd , visar följande kod hur man skriver ut trädet i - ordning . Varje nod har en vänster och höger pekare som pekar på den vänstra och högra noderna i den aktuella noden , tillsammans med ett dataobjekt som representerar dess värde. Den in - för traversering kommer korsa vänster noden först tills slå null , och trycket den överordnade noden innan traversera höger och börja om . Det innebär att varje nod endast skrivs ut om alla dess vänstersidiga barnnoder har tryckt först :
public class BT {
public void inorder ( Node x ) {
if ( x == null ) {return ; //stoppar rekursion när ingen nod }
inorder ( x.left ) , //alltid korsa vänster firstprint x.data ; //skriva data en gång den vänstra noden returnsinOrder ( x.right ) , //travers höger }
2
Traverse trädet förbeställa . Denna order är liknande i - ordning , förutom att skriva av noden kommer innan någon förflyttning . Så kommer noden ut dess värde , och sedan korsa vänster . Sedan, när rekursion återgår till noden efter att ha passerat vänster, kommer noden genomkorsa sedan höger. Detta innebär att noden alltid kommer ut sig innan något barn noder print :
public void preorder ( Node x ) {
if ( x == null ) {return ; //stoppar rekursion när det finns ingen Node }
print x.data , //printinOrder ( x.left ) , //travers leftinOrder ( x.right ) , //travers höger } Addera 3
Traverse trädet efter beställning . Detta är motsatsen till den förbeställa traversering . En nod kommer alltid att se till vänster eller höger noder innan du skriver själv , vilket innebär att alla andra underordnade noder under den kommer ut först :
public void Postorder ( Node x ) {
if ( x == null ) {return ; //stoppar rekursion när ingen nod }
inorder ( x.left ) , //travers leftinOrder ( x.right ) , //travers rightprint x.data ; //print } Addera