【发布时间】:2016-04-09 23:27:33
【问题描述】:
我试图在 BinarySearchTree 类中键入一个深拷贝方法,但我很难理解这里的逻辑。能否请您向我解释一下我该如何度过这个难关?
这是我的 main():
public static void main(String[] args) {
BinarySearchTree<String> bst1 = new BinarySearchTree<String>();
BinarySearchTree<String> bst2 = new BinarySearchTree<String>();
String[] words = {"hello", "world", "how", "are", "you", "doing"};
for (int i = 0; i < words.length; i++) {
bst1.add(words[i]);
}
bst1.copy(bst2);
}
这些是我的 copy() 方法(请记住,这些在 BinarySearchTree 类中):
public void copy(BinarySearchTree<E> bst2){
copy(this.root, bst2.root);
}
private void copy(Node<E> bst1, Node<E> bst2){
bst2.data = bst1.data;
if(bst1.left != null){
bst2.left = bst1.left;
copy(bst1.left, bst2.left);
}
if(bst1.right != null){
bst2.right = bst1.right;
copy(bst1.right, bst2.right);
}
}
请帮助我理解逻辑并使代码正常工作。
谢谢!
【问题讨论】:
-
如果你想要一个深拷贝,你应该创建新节点
标签: java binary-tree binary-search-tree