Java二叉树克隆问题

标签 java clone binary-tree

我有一个具有以下规范的 Java 二叉树,我需要克隆它。

public class Item {

    private final String value;
    public final Item left;
    public final Item right;

    ...

}

看似非常简单的任务让我感到困惑,因为克隆的树必须与原始树对象共享相同的单元格,而不是被复制。

但是,如果要将某个项目添加到原始树或克隆树中,则它不得传播到另一棵树。 IE。如果要将新项目添加到原始树中,则它不得出现在克隆树中,反之亦然。

此外,这需要在没有递归和任何循环构造的情况下完成。

所以我想知道是否有人能想到这样做,因为我不知道从哪里开始?

最佳答案

Node cloneTree(Node root) {
        Node n1 = new Node();
        n1.value = root.value;
        cloneTree(root, n1);
        return n1;
}

void cloneTree(Node root, Node newNode) {
        if (root == null) {
            return;
        }
        if (root.leftNode != null) {
            newNode.leftNode = new Node();
            newNode.leftNode.value = root.leftNode.value;
            cloneTree(root.leftNode, newNode.leftNode);
        }
        if (root.rightNode != null) {
            newNode.rightNode = new Node();
            newNode.rightNode.value = root.rightNode.value;
            cloneTree(root.rightNode, newNode.rightNode);
        }

}

关于Java二叉树克隆问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043048/

相关文章:

java - 性能:log(a/b) 与 log(a) - log(b)

java - 用于从 hdfs 提供输入并将输出写入 excel 文件的 Hadoop Mapreduce 示例

javascript - 单击带有删除按钮的克隆 div - 但是如何隐藏初始克隆上的删除按钮?

javascript - 带有新 ID 的 jQuery .clone .insertAfter

python - 以特定格式打印二叉树

java - 如何在firebase数据库中添加数据?

java - Android - 从任何类(class)获取位置

Java 克隆西洋跳棋游戏棋盘

java - LinkedBinaryTree<E> 类的 toString() 方法

java - 制作一棵树并排序它的数字