TTreeSentinel
Ambiente de programação com IA

Ordem estrita de árvores de busca binária

Valide nós inteiros de busca com duas referências a filhos.

● ● ●TreeSentinel●
Fluxos de trabalho · Ordem estrita de árvores de busca binária ×
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)
✳Ordem estrita de árvores de busca binária
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
01

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.

02

Modelos

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.

03

Projeto

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.

Fluxos de trabalho

Ordem estrita de árvores de busca binária

Fluxos de trabalho ↗
Fluxos de trabalho
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)
Ambiente de programação com IA

Revise a estrutura antes de confiar nos valores dentro dela

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.

Perguntas para o trabalho de validação de dados estruturados

Por que testar uma violação abaixo dos filhos imediatos?

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.

Chaves duplicadas são um erro de formato ou uma decisão de ordenaçã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.

O que uma referência repetida a um nó muda?

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.

Posso substituir a validação por uma verificação de saída ordenada?

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.

Baixar para Windows ↗

TreeSentinel · Atualizado 2026-10-25