Код перемещается по дереву до тех пор, пока он не попадет в корень, который не установлен - то есть left
или right
является null
. Если это произойдет, текущий исполнитель inorder
выйдет (преждевременно, можно сказать), позвонив return
.
При использовании return
, независимо от того, где в методе, метод завершается, поэтому следующие строки не выполняются.
Рассмотрим дерево
Чтобы представить это, вы могли бы создать структуру, подобную
Tree node4 = new Tree("Node 4", null, null);
Tree node5 = new Tree("Node 5", null, null);
Tree node2 = new Tree("Node 2", node4, node5);
Tree node6 = new Tree("Node 6", null, null);
Tree node7 = new Tree("Node 7", null, null);
Tree node3 = new Tree("Node 3", node6, node7);
Tree root = new Tree("Root", node2, node3);
При вызове inorder
на корень, вы получите:
Узел 4
Узел 2
Узел 5
Корень
Узел 6
Узел 3
Узел 7
Обратите внимание, что я обновил Tree
, чтобы иметь конструктор (а также в верхнем регистре его, так как классы должны с большой буквы).
public Tree(String data, Tree left, Tree right) {
this.data = data;
this.left = left;
this.right = right;
}
Не могли бы вы объяснить это по строкам? – YoshiK
@YoshiK Какую часть вы не понимаете? Попробуйте создать дерево примеров деревьев и посмотреть. – kba