Поиск, является ли Бинарное дерево бинарным деревом поиска [дубликат]

This question already has an answer here:

How do you validate a binary search tree? 30 answers

Сегодня у меня было интервью, где меня попросили написать программу, которая принимает двоичное дерево и возвращает значение true, если оно также является двоичным деревом поиска, в противном случае - false.

Мой подход 1: выполнить обход в порядке и сохранить элементы в O (n) времени. Теперь просмотрите массив / список элементов и проверьте, есть ли элемент в ith индекс больше, чем элемент в (i + 1)th индекс. Если такое условие встречается, вернуть false и выйти из цикла. (Это занимает O (N) время). В конце верните истину.

Но этот господин хотел, чтобы я дал эффективное решение. Я пытался, но безуспешно, потому что, чтобы определить, является ли это BST, я должен проверить каждый узел.

Более того, он указывал мне подумать над рекурсией. Мой подход 2: BT - это BST, если для любого узла N N -> слева - & lt; N и N-> справа & gt; N, и правопреемник правого узла N меньше, чем N, и правопреемник правого узла N больше N, а левое и правое поддеревья являются BST.

Но это будет сложно, и время выполнения не кажется хорошим. Пожалуйста, помогите, если вы знаете какое-либо оптимальное решение.

Ответы на вопрос(7)

Ваш ответ на вопрос