Допустим, у меня есть простой двоичный класс дерева узлов, например, так:обход через все узлы бинарного дерева в 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;
}
}
Как добавить метод, который способен рекурсивно пройти через любой размер дерево , посещая каждый существующий узел слева направо, без, пересматривая узел, который уже прошел?
Будет ли это работать ?:
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);
}
, который очень похож на правильный ответ ниже. –
@PeterWooster - право, за исключением того, что я вызываю метод траверса с каждого узла, заставляя рекурсию проходить рекурсивно для каждого узла, а не только от корня – RectangleEquals