public static TreeNode copy(TreeNode source)
{
if(source == null)
return null;
else
return new TreeNode(source.getInfo(), copy(source.getLeft()), copy(source.getRight()));
}
/Jasne. Przepraszam za opóźnienie. W każdym razie ... każda metoda rekurencyjna ma przypadek podstawowy i jeden lub więcej przypadków rekursywnych. W tym przypadku pierwsza linia jest oczywista ... jeśli argument parametru "source" ma wartość NULL (ponieważ w końcu zostanie obliczona, aby zakończyć działanie metody), zwróci wartość null; jeśli nie, inicjowana jest sprawa rekursywna. W takim przypadku zwracasz całe skopiowane drzewo po zakończeniu rekurencji. Używany jest operator "nowy", który wskazuje instancję TreeNode przy każdej wizycie w różnych węzłach drzewa podczas przejścia, występujący poprzez rekursywne wywołania "copy", którego argumenty stają się odniesieniami do lewego i prawego TreeNodes (jeśli są jakieś). Gdy w każdym argumencie źródło stanie się puste, inicjowana jest podstawowa sprawa, zwalniając stos rekursji z powrotem do pierwotnego wywołania "kopiuj", które jest kopią korzenia pierwotnego drzewa./
* "w języku JAVA" * Nie trzeba umieszczać znaczników w tytułach, a jest napisane "Java". –
Zgadzam się. Teraz edytowane. – lkkeepmoving