배경
이진 트리가 그 모든 노드 대부분이 아이들이있는 뿌리 나무입니다.
표시 이진 트리가 그 모든 노드 양의 정수로 표시되는 이진 트리입니다; 또한, 모든 라벨은 서로 다릅니다 .
BST (이진 검색 트리) 각 노드의 레이블이 오른쪽 하위 트리에있는 모든 노드의 레이블에 비해 자사의 왼쪽 하위 트리에있는 모든 노드의 레이블보다 큰, 작은 인 레이블 이진 트리입니다. 예를 들어 다음은 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의 다른 값.
규칙
- 유효한 제출 , I / O , 허점에 대한 표준 규칙 이 적용됩니다.
- 이것은 code-golf 이므로 가장 짧은 솔루션 (바이트)이 이깁니다. 평소와 같이, 골프 언어로 된 엄청나게 짧은 해결책이 선택한 언어로 더 긴 답변을 올리는 것을 방해하지 마십시오.
- 이것은 규칙이 아니지만 솔루션을 테스트하기위한 링크와 작동 방식에 대한 설명이 포함 된 경우 답변이 더 잘 수신됩니다.
예
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
예제를 시각적으로 살펴 보려면 이 링크 ( Kevin Cruijssen 제공 )를 확인하십시오 .