Lassen Sie sich sagen, dass ich eine einfache binäre Baum Knotenklasse habe, etwa so:Verfahrgeschwindigkeit durch alle Knoten eines binären Baumes 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;
}
}
Wie würde ich eine Methode hinzufügen, die in der Lage ist rekursiv durch jede Größe Baum durchquert , jeden vorhandenen Knoten von links nach rechts zu besuchen, ohne einen bereits durchlaufenen Knoten erneut zu besuchen?
Würde diese Arbeit ?:
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);
}
das sieht sehr ähnlich wie die richtige Antwort unten. –
@PeterWooster - rechts, außer dass ich die Traverse-Methode von jedem Knoten aus aufrufen, wodurch die Rekursion für jeden Knoten rekursiv statt nur von der Wurzel – RectangleEquals