-4
이 방법이 이진 트리를 복사하는 이유를 모르지만 노드를 삽입하는 방법을 사용하지 않아 이상하게 보입니다. 감사합니다.이진 트리의 재귀 복사본
public BinaryTree<E> copy(BinaryTree<E> T, Position<E> v)
{
BinaryTree<E> S = new LinkedBinaryTree<E>();
if (T.hasRight(v))
copy(T, T.right(v)); // recurse on left child
if (T.hasLeft(v))
copy(T, T.left(v)); // recurse on right child
return S;
}
public static void main(String[] args) {
LinkedBinaryTree<String> T = new LinkedBinaryTree<String>();
Position<String> r = T.addRoot("r");
Position<String> a = T.insertLeft(r, "a");
Position<String> b = T.insertRight(r, "b");
Position<String> c = T.insertLeft(a, "c");
Position<String> e = T.insertRight(b,"e");
Position<String> f = T.insertLeft(b,"f");
Position<String> g = T.insertRight(a,"g");
Position<String> h = T.insertLeft(g,"h");
Position<String> i = T.insertRight(g,"i");
BinaryTree<String> A = T.copy(T, r);
A.treeprint(A, r);
System.out.println("...................");
System.out.println("isempty: "+A.isEmpty()); //true
System.out.println(A.left(r).element()); //a
System.out.println(A.right(r).element()); //b
}
이 방법은 작동하지 않으며 작동하지 않습니다. –
작동합니다. 이상합니다. – kabal
이 메소드는 빈 LinkedBinaryTree를 생성하고 리턴하며, 결코 S를 사용하지 않습니다. '작동 중'이라는 작은 테스트를 제공하십시오. –