如何使用java为二进制搜索树创建深度副本

如何使用java为二进制搜索树创建深度副本,java,binary-search-tree,Java,Binary Search Tree,我想要一份这棵树的深度副本,标题应该和下面给出的相同, 它应该像我们描述的那样工作, 此构造函数将创建一个二元搜索树,它是由此构造函数的lone参数给定的现有二元搜索树的深层副本 public class BinarySearchTree { public class TreeNode { private int item; private TreeNode leftLink; private TreeNode rightLink; // One constr

我想要一份这棵树的深度副本,标题应该和下面给出的相同, 它应该像我们描述的那样工作, 此构造函数将创建一个二元搜索树,它是由此构造函数的lone参数给定的现有二元搜索树的深层副本

public class BinarySearchTree
{
public class TreeNode       
{   
private int item;
    private TreeNode leftLink;
    private TreeNode rightLink;
// One constructor for TreeNode
///////////////////////////////////////////////////////
    public TreeNode(int newItem, TreeNode left, TreeNode right)
    {
         item      = newItem;
         leftLink  = left;
         rightLink = right;
    }
}   //  End of TreeNode inner class

// Declaration of class BinarySearchTree begins here.
// Three instance variables.
private TreeNode root;
private TreeNode parent;    // parent node of a target node being sought
private int parentLink;     // pointer number of a parent node being sought


public BinarySearchTree( )
{
    root = parent = null;
    parentLink = 0;         // no such pointer at the beginning
}

您可以向树节点添加一个函数:

public BinarySearchTree (BinarySearchTree  bst)
{

  //your code should be here
}
// more codes here but given code is ok for question
}
然后:

这是一个例子,当然,你应该注意空值


您可以在这里找到一个更好的示例:

您需要给我们的不仅仅是一块代码,请参阅。
public TreeNode deepCopy() {
    return new TreeNode(item, leftLink.deepCopy(), rightLink.deepCopy())
}
public BinarySearchTree (BinarySearchTree  bst) {
    root = bst.root.deepCopy();
    parent = bst.parent.deepCopy();
    parentLink = bst.parentLink;
}