Функция для глубокого копирования дерева выражений, включая его родительскую иерархию?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Функция для глубокого копирования дерева выражений, включая его родительскую иерархию?

Сообщение Anonymous »


Я хочу глубоко скопировать дерево выражений. Я знаю традиционный способ сделать это, который по большей части работает. Вот базовая версия дерева выражений:

Выражение публичного класса { публичное выражение осталось; право на публичное выражение; родитель публичного выражения; общедоступная строка посередине; public Expression(Выражение слева, Строка посередине, Выражение справа) { this.left = слева; this.right = правильно; this.middle = средний; если (слева!= ноль) { left.parent = это; } если (право!= ноль) { right.parent = это; } } public void setLeft (Выражение слева) { this.left = слева; если (слева!= ноль) { left.parent = это; } } public void setRight (Право на выражение) { this.right = правильно; если (право!= ноль) { right.parent = это; } }} Традиционный способ глубокого копирования:

public Expression copy() { Выражение leftCopy = (left != null) ? left.copy(): ноль; Выражение rightCopy = (right != null) ? right.copy(): ноль; вернуть новое выражение (leftCopy, оператор, rightCopy, null); } Теперь это работает хорошо, но мне нужна еще одна функция глубокого копирования (copyFull), которая также копирует родительскую иерархию. Текущая глубокая копия только копирует выражение и делает его корнем независимо от того, было оно на самом деле корнем или нет. Теперь, как бы мне создать полную функцию глубокого копирования, которая бы гарантировала копирование всей структуры, включая родительскую иерархию, И функция должна возвращать копию экземпляра выражения, который вызвал функцию copyFull(). Я совершенно уверен, что эта новая функция глубокого копирования будет использовать предыдущую. Пример использования: Выражение rightRightCopy = originalExpression.right.right.copyFull(); Выражение originalExpressionCopy = rightRightCopy.parent.parent;
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»