Hola Pablo,
El algoritmo es el mismo pero no la entrada. Si la entrada varía, los caminos lógicos seguidos por el algoritmo pueden variar, y ejecutar partes del código que antes no se habían ejecutado.
Te recomiendo que intentes averiguar, mediante prints estratégicos, cuáles son estas partes del código, y dónde es que se está generando el segmentation fault. También podés utilizar valgrind que te da más información sobre dónde se producen los errores.
También te recomiendo que ejecutes los casos de prueba a mano, línea por línea y los repliques "a mano", es decir, que te armes una idea de cómo es el árbol antes de filtrar, y cómo debería quedar luego del filtrado.
Esto te va a permitir diagnosticar con más precisión dónde puede estar fallando el algoritmo.
Saludos