Revise antes de aplicar
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Valide nós inteiros de busca com duas referências a filhos.
def is_strict_bst(root):
pending, seen, checks = [(root, None, None)], set(), []
while pending:
node, low, high = pending.pop()
if node is None:
continue
if type(node) is not list or len(node) != 3 or type(node[0]) is not int:
raise ValueError("tree.node")
if id(node) in seen or len(seen) == 1000:
raise ValueError("tree.structure")
seen.add(id(node))
value, left, right = node
checks.append((value, low, high))
pending.extend([(right, value, high), (left, low, value)])
return all((low is None or low < value) and
(high is None or value < high) for value, low, high in checks)Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
Teste árvores vazias e limites dos ancestrais, retorne falso para chaves duplicadas e rejeite ciclos, filhos compartilhados, nós inválidos ou mais de 1000 nós.
def is_strict_bst(root):
pending, seen, checks = [(root, None, None)], set(), []
while pending:
node, low, high = pending.pop()
if node is None:
continue
if type(node) is not list or len(node) != 3 or type(node[0]) is not int:
raise ValueError("tree.node")
if id(node) in seen or len(seen) == 1000:
raise ValueError("tree.structure")
seen.add(id(node))
value, left, right = node
checks.append((value, low, high))
pending.extend([(right, value, high), (left, low, value)])
return all((low is None or low < value) and
(high is None or value < high) for value, low, high in checks)O TreeSentinel oferece um ambiente de projeto para Windows e uma conversa com IA vinculada aos arquivos-fonte para a manutenção de dados estruturados. Comece mostrando onde a aplicação recebe uma estrutura e como usa o resultado da validação. Peça ao modelo que examine toda essa interface antes de propor uma verificação mais simples ou outro percurso.
Por exemplo, uma tarefa com bst_order.py pode investigar uma árvore cujos filhos imediatos parecem ordenados, enquanto um valor mais profundo viola o limite de um ancestral. Inclua a estrutura com falha e o resultado esperado. Depois, pergunte como nós malformados e referências repetidas são tratados, para que uma correção de ordenação não ignore premissas sobre a forma percorrida.
Revise a proposta resultante para resultados distintos: uma árvore válida, uma falha de ordenação e uma estrutura malformada. Execute as verificações pertinentes do projeto e examine como cada resultado chega ao consumidor. Mantenha explícita qualquer alteração na política de chaves duplicadas. O que parece uma pequena edição de comparação pode mudar quais dados a aplicação ao redor aceita.
O TreeSentinel se conecta a endpoints compatíveis com OpenAI ou endpoints Anthropic suportados, com credenciais quando necessário. Você pode selecionar um modelo de IA abliterado se o endpoint oferecer um. As restrições do provedor, os limites de contexto e as ferramentas disponíveis continuam fazendo parte dessa configuração; a revisão deve se apoiar em estruturas concretas e resultados observáveis, em vez da confiança do modelo.
Uma comparação local pode passar enquanto um descendente viola o limite de um ancestral anterior. Forneça um caso aninhado pequeno que exponha essa diferença e declare o resultado esperado. Revise o percurso proposto em relação a ele antes de aceitar uma simplificação da lógica de validação.
Defina isso no contrato da aplicação. O exemplo impõe ordenação estrita, que exclui chaves iguais. Examine se o consumidor distingue entradas malformadas de uma estrutura bem formada que falha na ordenação e preserve essas convenções de resposta na mudança proposta.
Ela pode significar que a entrada não tem a forma de árvore esperada pela rotina, mesmo quando os valores individuais parecem aceitáveis. Inclua um caso com referência compartilhada ou ciclo, quando apropriado. Confira a terminação e o comportamento de rejeição, em vez de depender exclusivamente de exemplos aninhados comuns.
Somente depois de considerar a estrutura e o comportamento de falha exigidos pelo chamador. Uma verificação de valores em lista plana pode ocultar nós malformados ou premissas de percurso. Peça ao modelo que explique essas implicações usando o código real antes de mudar o contrato de validação.
TreeSentinel · Atualizado 2026-10-25