243
правки
Изменения
→Проверка того, что заданное дерево является деревом поиска
|definition = Определить, является ли заданное двоичное дерево деревом поиска.
}}
Для того чтобы решить эту задачу, применим [[Обход в глубину, цвета вершин|обход в глубину]]. Начнём путь Запустим от корня рекурсивную логическую функцию, которая выведет <tex>true</tex>, если дерево является BST и будем рассматривать для каждой вершины её детей<tex>false</tex> в противном случае. Если ребёнок Чтобы дерево не нарушает условия дерева поискаявлялось BST, спускаемся на следующий уровень. Если же нашлась в нём должна быть хотя бы одна вершина, стоящая которая не на своём месте, то этого попадает под определение дерева поиска. То есть достаточнонайти всего одну такую вершину, чтобы сказать, что заданное дерево не является деревом поиска, выйти из рекурсии и вернуть значение <tex>\mathrm{false}</tex>. Если мы дойдём же, дойдя до листьев и , функция не найдём противоречащих условию вершинвстретит на своём пути такие вершины, возвращаем она вернёт значение <tex>\mathrm{true}</tex>.
'''bool''' check(v : '''Node''', min: '''integer''', max: '''integer'''): <font color="green">//min и max - минимально и максимально допустимые значения в вершинах поддерева.</font>