Escreva uma função para buscar um número impar em uma árvore binária NÃO ordenada.

Passo 1

O enunciado pede uma função para verificar se existe algum valor ímpar em uma árvore binária sem nenhuma propriedade de ordenação. O conteúdo envolvido é busca em estruturas de árvore usando travessia (recursiva ou iterativa). Vamos precisar entender como percorrer todos os nós e como testar se um valor é ímpar.

Passo 2

Para percorrer uma árvore binária não ordenada, não podemos nos basear em ordenação de valores. Precisamos visitar todos os nós até encontrar um resultado ou confirmar que não há nenhum. Uma forma simples é usar travessia pré-ordem: verificar o nó atual antes de descer para os filhos.
Em cada nó, aplicamos o teste de ímparidade. Na prática, fazemos o teste “valor % 2 != 0”. Se for verdadeiro, já podemos retornar sucesso (True) e interromper a busca.

Passo 3

Se o nó atual não for ímpar, repetimos o mesmo procedimento recursivamente nos filhos esquerdo e direito. Se qualquer chamada retornar True, propagamos esse resultado para cima.
Caso alcancemos um ponteiro nulo (árvore vazia ou folha sem filho), retornamos False, pois não encontramos nenhum valor ímpar naquele caminho.

Passo 4

A função final combina esses passos: testa o nó, depois chama a si mesma nos subárvores esquerda e direita, e devolve True assim que algum teste der positivo. Caso contrário, retorna False ao final.

Resposta

def busca_impar(arvore):
“”"
Retorna True se existir algum valor ímpar na árvore binária arvore, ou False caso contrário.
Assume que cada nó tem os atributos valor, esquerda e direita.
“”"
if arvore is None:
return False
# Testa se o valor do nó atual é ímpar
if arvore.valor % 2 != 0:
return True
# Continua a busca nos filhos
return busca_impar(arvore.esquerda) or busca_impar(arvore.direita)

Exercícios relacionados