Изменения

Перейти к: навигация, поиск

Дерево поиска, наивная реализация

606 байт добавлено, 00:50, 8 января 2017
Проверка того, что заданное дерево является деревом поиска
}}
Для того чтобы решить эту задачу, применим [[Обход в глубину, цвета вершин|обход в глубину]]. Начнём путь от корня и будем рассматривать для каждой вершины её детей. Если ребёнок не нарушает условия дерева поиска, спускаемся на следующий уровень. Если же нашлась вершина, стоящая не на своём месте, то этого достаточно, чтобы сказать, что заданное дерево не является деревом поиска, и вернуть значение <tex>\mathrm{false}</tex>. Если мы дойдём до листьев и не найдём противоречащих условию вершин, возвращаем значение <tex>\mathrm{true}</tex>.
====Реализация====
====Псевдокод====
'''bool''' check(v : '''Node''', min: '''integer''', max: '''integer'''): <font color="green">//min и max - минимально и максимально допустимые значения в вершинах поддерева.
'''if''' v.left != ''null''
'''if''' v.left.key > v.key '''or''' v.left.key < min
'''return''' false
'''else''' check(v.left, min, v.key)
'''if''' v.right.key < v.key '''or''' v.right.key > max
'''return''' false
'''else''' check(v.right, v.key, max)
'''return''' true
===Поиск максимального поддерева, являющегося BST, в заданном двоичном дереве===
243
правки

Навигация