【问题标题】:How to create deep copy for binary search tree using java [closed]如何使用java为二叉搜索树创建深拷贝[关闭]
【发布时间】:2013-12-07 16:56:18
【问题描述】:
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
}

【问题讨论】:

标签: java binary-search-tree


【解决方案1】:

你可以给你的 TreeNode 添加一个函数:

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;
}

这当然是一个例子,你要注意null值。

您可以在此处找到更好的示例:How to deep copy a tree?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多