Powiedzmy mam prosty binarny klasę węzła drzewa, tak jak poniżej:Przejazd przez wszystkich węzłach binarnego drzewa w Javie
public class BinaryTreeNode {
public String identifier = "";
public BinaryTreeNode parent = null;
public BinaryTreeNode left = null;
public BinaryTreeNode right = null;
public BinaryTreeNode(BinaryTreeNode parent, String identifier)
{
this.parent = parent; //passing null makes this the root node
this.identifier = identifier;
}
public boolean IsRoot() {
return parent == null;
}
}
Jak bym dodać metodę, która jest w stanie rekurencyjnie przechodzić przez żadne drzewo size , odwiedzając każdy i każdy istniejący węzeł od lewej do prawej, bez ponownej rejestracji węzła, który już przeszedł?
to będzie działać ?:
public void traverseFrom(BinaryTreeNode rootNode)
{
/* insert code dealing with this node here */
if(rootNode.left != null)
rootNode.left.traverseFrom(rootNode.left);
if(rootNode.right != null)
rootNode.traverseFrom(rootNode.right);
}
który wygląda trochę jak odpowiednia odpowiedź poniżej. –
@PeterWooster - z prawej strony, z tą różnicą, że wywołuję metodę przechodzenia z każdego węzła, powodując rekursję rekurencyjnie dla każdego węzła, zamiast tylko z korzenia – RectangleEquals