Pergunta

Preciso descobrir quantos valores pares estão contidos em uma árvore binária.

Este é o meu código.

private int countEven(BSTNode root){

if ((root == null)|| (root.value%2==1))
return 0;

return 1+ countEven(root.left) + countEven(root.right);


}

Acabei de codificar, pois não tenho uma maneira de testar isso. Não consigo testá -lo no momento, mas preciso tanto de uma resposta. Qualquer ajuda é profundamente apreciada.

Foi útil?

Solução

Se houver um nó com um valor ímpar que contém subnodos com valores uniformes, os subnodos não serão contados no seu código. Pequeno aprimoramento abaixo.

private int countEven(BSTNode root){

  if (root == null)
    return 0;

  int val = (root.value%2==1) ? 0 : 1;

  return val + countEven(root.left) + countEven(root.right);


}

Outras dicas

private int countEven(BSTNode root) {
   if (root == null)
      return 0;

   int n = countEven(root.left) + countEven(root.right);
   if(root.value % 2 == 0)
      return n + 1;
   else
      return n;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top