TTreeSentinel
Робоче середовище з ШІ для коду

Строгий порядок двійкового дерева пошуку

Перевірте цілочисельні вузли пошуку з двома посиланнями на нащадків.

● ● ●TreeSentinel●
Сценарії · Строгий порядок двійкового дерева пошуку ×
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)
✳Строгий порядок двійкового дерева пошуку
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
01

Перевірте перед застосуванням

Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.

02

Моделі

Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.

03

Проєкт

Випробуйте порожнє дерево й межі предків, повертайте хибність при повторних ключах і відхиляйте цикли, спільних нащадків, хибні вузли чи понад 1000 вузлів.

Сценарії

Строгий порядок двійкового дерева пошуку

Сценарії ↗
Сценарії
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 надає для супроводу структурованих даних робоче середовище проєкту у Windows та обговорення з ШІ, прив’язане до вихідних файлів. Почніть із демонстрації того, де застосунок отримує структуру та як використовує результат валідації. Попросіть модель перевірити всю цю межу перед пропозицією простішої перевірки чи іншого обходу.

Наприклад, завдання для bst_order.py може досліджувати дерево, безпосередні дочірні вузли якого виглядають упорядкованими, але глибше значення порушує межу предка. Додайте структуру з помилкою й очікуваний результат. Потім запитайте, як обробляються некоректні вузли та повторні посилання, щоб виправлення порядку не оминуло припущення про форму структури, яку обходять.

Перевірте отриману пропозицію для окремих результатів: коректного дерева, порушення порядку й некоректної структури. Запустіть відповідні перевірки проєкту й простежте, як кожен результат доходить до споживача. Залишайте будь-яку зміну політики повторюваних ключів явною. Те, що здається незначною правкою порівняння, може змінити дані, які приймає навколишній застосунок.

TreeSentinel підключається до підтримуваних сумісних з OpenAI або Anthropic кінцевих точок з обліковими даними за потреби. Можна вибрати аблітеровану модель ШІ, якщо кінцева точка її пропонує. Обмеження постачальника, межі контексту й доступні інструменти залишаються частиною цього налаштування; перевірка має спиратися на конкретні структури та спостережувані результати, а не на впевненість моделі.

Питання щодо валідації структурованих даних

Навіщо тестувати порушення нижче безпосередніх дочірніх вузлів?

Локальне порівняння може пройти, хоча нащадок порушує межу попереднього предка. Надайте невеликий вкладений приклад, що виявляє цю різницю, і зазначте очікуваний результат. Перевірте за ним запропонований обхід перед прийняттям спрощення логіки валідації.

Повторювані ключі — це помилка форми чи рішення щодо порядку?

Визначте це в контракті застосунку. Приклад вимагає строгого порядку, що виключає рівні ключі. Перевірте, чи споживач відрізняє некоректний вхід від правильно сформованої структури з порушенням порядку, і збережіть ці домовленості відповідей у запропонованій зміні.

Що змінює повторне посилання на вузол?

Воно може означати, що вхід не має форми дерева, яку очікує функція, навіть коли окремі значення прийнятні. За потреби додайте приклад зі спільним посиланням або циклом. Перевіряйте завершення й відхилення, а не покладайтеся лише на звичайні вкладені приклади.

Чи можна замінити валідацію перевіркою відсортованого виходу?

Лише після врахування структури та поведінки помилок, потрібних коду виклику. Перевірка плоского списку значень може приховати некоректні вузли або припущення обходу. Попросіть модель пояснити ці компроміси на фактичному коді перед зміною контракту валідації.

Завантажити для Windows ↗

TreeSentinel · Оновлено 2026-10-25