У меня есть простой класс Node для построения узла дерева в моем двоичном дереве:
class Node {
int data;
Node left;
Node right;
public Node(int i) {
this.data = i;
}
}
Я написал простой класс Tree, который будет использовать структуру Node для построения дерева:
class Tree {
Node root;
}
Я пытаюсь написать рекурсивную функцию mirror () в моем классе Tree, которая будет возвращать зеркальную версию дерева (левый и правый узлы поменялись местами).
Так что, если я вызову эту функцию для Tree t, я бы ожидал начать с корня и поменять местами все узлы, пока мы не достигнем узла, у которого больше нет дочерних мест для обмена. Часть, с которой я борюсь, - это после того, как мы поменяли местами дочерние узлы, как я могу рекурсивно вызвать функцию зеркала на этих узлах, а затем вернуть зеркальное дерево.
Как видите, приведенный ниже код поменяет местами дочерние узлы корневого узла, но после этого я застрял, поскольку не могу вызвать функцию зеркального отображения на узлах, а только на дереве.
public Tree mirror() {
Node temp = this.root.left;
this.root.left = this.root.right;
this.root.right = temp;
Если бы вы могли указать мне правильное направление, я был бы признателен.