Pergunta

Tenho que escrever um algoritmo que verifique se uma árvore é uma árvore binária completa (cada nó, exceto as folhas, deve ter 2 filhos), mas não sei se esta versão está correta.

 isComplete(u) 
{
        if(u == NULL)
                return false
        else
        {
                left = isComplete(u.left);
                right = isComplete(u.right);
                complete = left && right;

                return complete.
        }
}
Foi útil?

Solução

Como seu algoritmo é recursivo, você precisa considerar:

  • o caso inicial/final:as folhas
  • e o caso geral:os nós

Por exemplo, no caso de fatorial:

  • o caso inicial $f(1) = 1$
  • e o caso geral é $f(n) = n*f(n-1)$

Formalmente, para provar sua correção, você pode usar a indução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a cs.stackexchange
scroll top