add depth first traverse