Revisa antes de aplicar
Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
Valida nodos enteros de búsqueda con dos referencias a hijos.
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)Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.
Comprueba árboles vacíos y límites de ancestros, devuelve falso ante claves duplicadas y rechaza ciclos, hijos compartidos, nodos incorrectos o más de 1000 nodos.
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)TreeSentinel ofrece para el mantenimiento de datos estructurados un espacio de proyectos para Windows y una conversación con IA vinculada a los archivos de código. Empieza mostrando dónde recibe la aplicación una estructura y cómo utiliza el resultado de validación. Pide al modelo que inspeccione todo ese límite antes de proponer una comprobación más sencilla u otro recorrido.
Por ejemplo, una tarea sobre bst_order.py podría investigar un árbol cuyos hijos inmediatos parecen ordenados mientras un valor más profundo incumple el límite de un antecesor. Incluye la estructura que falla y el resultado esperado. Pregunta después cómo se tratan los nodos mal formados y las referencias repetidas, para que una corrección del orden no ignore supuestos sobre la estructura recorrida.
Revisa la propuesta resultante distinguiendo resultados: un árbol válido, un fallo de orden y una estructura mal formada. Ejecuta las comprobaciones pertinentes del proyecto e inspecciona cómo llega cada resultado al consumidor. Explicita cualquier cambio en la política de claves duplicadas. Lo que parece una modificación menor de comparación puede alterar qué datos acepta la aplicación circundante.
TreeSentinel se conecta a endpoints admitidos compatibles con OpenAI o de Anthropic, con credenciales cuando sean necesarias. Puedes seleccionar un modelo de IA ablacionado si tu endpoint lo ofrece. Las restricciones del proveedor, los límites de contexto y las herramientas disponibles siguen formando parte de esa configuración; la revisión debe basarse en estructuras concretas y resultados observables, no en la confianza del modelo.
Una comparación local puede superarse mientras un descendiente incumple el límite de un antecesor anterior. Aporta un caso anidado pequeño que muestre esa diferencia e indica el resultado esperado. Revisa el recorrido propuesto con ese caso antes de aceptar una simplificación de la validación.
Defínelo en el contrato de la aplicación. El ejemplo exige un orden estricto, que excluye claves iguales. Inspecciona si el consumidor distingue entradas mal formadas de estructuras bien formadas que incumplen el orden, y conserva esas convenciones de respuesta en el cambio propuesto.
Puede significar que la entrada no tiene la forma de árbol esperada por la rutina, aunque los valores individuales parezcan aceptables. Incluye un caso con referencias compartidas o un ciclo cuando corresponda. Comprueba la terminación y el rechazo en lugar de depender exclusivamente de ejemplos anidados normales.
Solo después de tener en cuenta la estructura y el comportamiento de fallo que necesita el consumidor. Una comprobación de valores aplanados puede ocultar nodos mal formados o supuestos del recorrido. Pide al modelo que explique esas ventajas e inconvenientes usando el código real antes de cambiar el contrato de validación.
TreeSentinel · Actualizado 2026-10-25