Diciamo che ho una semplice classe nodo di albero binario, in questo modo:Attraversando attraverso tutti i nodi di un albero binario in Java
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;
}
}
Come vorrei aggiungere un metodo che è in grado di attraversare ricorsivamente attraverso qualsiasi albero di dimensioni , visitando ogni nodo esistente da sinistra a destra, senza rivisitando un nodo che è già stato attraversato?
Sarebbe questo lavoro ?:
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);
}
sembra molto simile alla risposta corretta di seguito. –
@PeterWooster - a destra, tranne che sto chiamando il metodo traversa da ciascun nodo, causando la ricorsività in modo ricorsivo per ciascun nodo anziché solo dalla radice – RectangleEquals