Задний план
Бинарное дерево является внедренным деревом, каждый узел имеет не более двух детей.
Меченное бинарное дерево представляет собой бинарное дерево, каждый узел обозначен с положительным целым числом; Более того, все ярлыки различны .
БСТ (бинарное дерево поиска) представляет собой меченый бинарное дерево , в котором метка каждого узла больше , чем этикетках всех узлов в левом поддереве, и меньше , чем этикетках всех узлов в его правого поддерева. Например, следующее является BST:
Обход предварительного порядка для помеченного двоичного дерева определяется следующим псевдокодом.
function preorder(node)
if node is null then
return
else
print(node.label)
preorder(node.left)
preorder(node.right)
Смотрите следующее изображение, чтобы получить лучшую интуицию:
Вершины этого двоичного дерева печатаются в следующем порядке:
F, B, A, D, C, E, G, I, H
Вы можете прочитать больше о BST здесь и больше о предварительном заказе здесь .
Вызов
Учитывая список целых чисел , ваша задача состоит в том, чтобы определить, существует ли BST, чей обход при предварительном заказе печатает ровно .
вход
- Непустой список различных положительных целых чисел .
- Опционально, длина .
Выход
- Truthy значение , если является предзаказ обход некоторых BST.
- Falsey значение в противном случае.
правила
- Применяются стандартные правила для действительных представлений , ввода / вывода , лазеек .
- Это код-гольф , поэтому выигрывает самое короткое (в байтах) решение . Как обычно, не позволяйте смехотворно коротким решениям на языках игры в гольф отговаривать вас публиковать более длинные ответы на выбранном вами языке.
- Это не правило, но ваш ответ будет лучше принят, если он будет содержать ссылку для проверки решения и объяснение того, как оно работает.
Примеры
Input ----> Output
[1] ----> True
[1,2,3,4] ----> True
[5,1,4,2,3] ----> True
[5,4,3,2,1,6,7,8,9] ----> True
[4,2,1,3,6,5,7] ----> True
[8,3,1,6,4,7,10,14,13] ----> True
[2,3,1] ----> False
[6,3,2,4,5,1,8,7,9] ----> False
[1,2,3,4,5,7,8,6] ----> False
[3,1,4,2] ----> False
Проверьте эту ссылку (любезно предоставлено Кевином Круйссеном ), чтобы наглядно увидеть примеры.