Questão discursiva - Máximo 35 linhas
Um programa Java armazena informações sobre notas fiscais relativas a serviços prestados por uma empresa. As notas fiscais são divididas em notas emitidas para pessoas físicas (PF) e para pessoas jurídicas (PJ). As classes a seguir são utilizadas para representar tais informações:

As informações sobre as notas fiscais estão organizadas em uma árvore binária de busca, ordenadas segundo a data de emissão da nota.
A classe a seguir representa um nó dessa árvore binária de busca:

As variáveis esq e dir são usadas, respectivamente, para referenciar as subárvores à esquerda e à direita de um nó. A variável data armazena a data de emissão da nota, no formato AAMMDD (por exemplo, 22/04/2012 será armazenada como o inteiro 120422). A variável ln referencia um array contendo todas as notas fiscais emitidas na data em questão (variável data).
A classe Arv é utilizada para implementar uma árvore binária de busca constituída por nós do tipo ArvNo. Sua estrutura é a seguinte:

O método calcTotImpostoPF() tem por objetivo calcular o somatório do imposto sobre serviços (ISS) recolhido sobre cada nota fiscal emitida para uma pessoa física entre duas datas passadas como parâmetros (dini <= ArvNo.data <= dfim). Por ser um método privado, ele é acionado a partir do método público totImpostoPF().
Escreva um algoritmo recursivo para o método calcTotImpostoPF() que percorra a árvore binária de busca e calcule o somatório do ISS recolhido sobre cada nota fiscal emitida para uma pessoa física entre as datas fornecidas. A sua solução deve levar em conta o seguinte:
• Apenas as notas referentes a pessoas físicas devem ser consideradas.
• O ISS cobrado sobre notas fiscais emitidas para pessoas físicas é de 10% do valor da nota.
• Assuma que a variável Arv.raiz referencia o nó raiz de uma árvore (possivelmente vazia) que foi carregada por um método não exibido no enunciado desta questão.
• Nenhuma nova propriedade (método, variável de instância ou variável estática) pode ser inserida nas classes apresentadas no enunciado.
• Nenhuma modificação pode ser feita no código apresentado no enunciado, com exceção do corpo dos métodos que façam parte da solução do problema.
• O algoritmo deve levar obrigatoriamente em conta as características de uma árvore binária de busca.
• Apenas as implementações recursivas do método calcTotImpostoPF() serão consideradas.