-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.請提供一個小測試來顯示它「正在工作」。 –