Jeśli chodzi o drzewo BST, to jeśli implementacja samego drzewa jest taka, że przez NULL oznaczamy brak danego syna, a każdy węzel posiada składowe wskaźniki node* lewy i node* prawy to z grubsza wyglądało by to tak
void dfs ( node* v, node* v_w_nowym_drzewie )
{
skopiuj wszystkie wartosci z v do v_w_nowym_drzewie oprócz adresów synów
jesli lewy syn v != NULL
przypisz v_w_nowym_drzewie pamiec na lewego syna
wywolaj dfs( adres lewego syna v, adres lewego syna v_w_nowym_drzewie)
potem to samo dla prawego syna
}