fundo
Uma árvore binária é uma árvore enraizada cujo todo nó tem no máximo dois filhos.
Uma árvore binária rotulada é uma árvore binária cujo nó é rotulado com um número inteiro positivo; além disso, todos os rótulos são distintos .
Uma BST (árvore de pesquisa binária) é uma árvore binária rotulada na qual o rótulo de cada nó é maior que os rótulos de todos os nós na subárvore esquerda e menor que os rótulos de todos os nós na subárvore direita. Por exemplo, o seguinte é um BST:
O percurso de pré-ordem de uma árvore binária rotulada é definido pelo pseudo-código a seguir.
function preorder(node)
if node is null then
return
else
print(node.label)
preorder(node.left)
preorder(node.right)
Veja a imagem a seguir para obter uma melhor intuição:
Os vértices dessa árvore binária são impressos na seguinte ordem:
F, B, A, D, C, E, G, I, H
Você pode ler mais sobre BSTs aqui e mais sobre a pré-encomenda de passagem aqui .
Desafio
Dada uma lista de números inteiros , sua tarefa é determinar se existe uma BST cuja passagem de pré-ordem imprima exatamente .
Entrada
- Uma lista não vazia de números inteiros positivos distintos .
- Opcionalmente, o comprimento de .
Saída
- Um valor verdadeiro se é a passagem de pré-ordem de algum BST.
- Um valor falsey caso contrário.
Regras
- Regras padrão para envios válidos , E / S , brechas .
- Esta é a code-golf , a solução mais curta (em bytes) vence. Como sempre, não permita que soluções ridiculamente curtas nos idiomas de golfe o desencorajem a postar uma resposta mais longa no idioma de sua escolha.
- Esta não é uma regra, mas sua resposta será melhor recebida se incluir um link para testar a solução e uma explicação de como ela funciona.
Exemplos
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
Confira este link (cortesia de Kevin Cruijssen ) para dar uma olhada visual nos exemplos.