Olá Felipe. Não sou muito bom explicando, mas vou tentar.
É o seguinte, essa função retorna um valor do tipo inteiro, logo era irá retornar 0 se o ponteiro *p apontar para NULL, mas caso ele não aponte para NULL irá ocorrer a chamada recursiva sendo que os parâmetros da função serão o ponteiro do nó esquerdo e o ponteiro do nó direito.
O pensamento é o seguinte: *p é uma nó? Se sim, ele soma 1 e verifica o nó esquerdo e o nó direito, senão ele soma 0.