У меня есть два кода, которые, на мой взгляд, делают то же самое, но это не так. Я пытаюсь создать итератор для моего дерева настраиваемых наборов. Вот код.Java-рекурсивный итератор с моим собственным деревом
public LinkedList<AnyType> traverse (TheNode<AnyType> node,LinkedList<AnyType> theList){
if (node.left != null)
return traverse (node.left,theList);
theList.push(node.element);
if (node.right != null)
return traverse (node.right,theList);
return theList;
}
public void traverseNrTwo (TheNode<AnyType> node){
if (node.left != null){
traverseNrTwo (node.left);
}
list.push(node.element);
if (node.right != null){
traverseNrTwo (node.right);
}
}
traverse
идет только через левую сторону дерева и добавляет его в список, но traveseNrTwo
проходит через все дерево. Итак, мой вопрос: почему они делают две разные вещи?