배경
레이블이없는 트리는 다음과 같습니다.
o
/ | \
o o o
| / \
o o o
이 트리 를 선형화 하기 위해 먼저 각 노드 o
에 여러 개의 자식 노드로 레이블 을 지정합니다.
3
/ | \
1 0 2
| / \
0 0 0
그런 다음 한 줄씩, 왼쪽에서 오른쪽으로 의미하는 호흡 우선 순위로 목록에 숫자를 씁니다.
[3, 1, 0, 2, 0, 0, 0]
이것은 위의 트리를 독특하고 모호하지 않은 표현으로, 두 개의 다른 순수 트리가 동일한 선형화를 가지지 않으며 목록에서 원래 트리를 재구성 할 수 있음을 의미합니다.
각 트리가 특정 정수 목록에 해당하지만 각 정수 목록이 유효한 선형화 된 트리를 [2, 0, 0, 0]
나타내는 것은 아닙니다 . 예를 들어 유효한 트리 를 나타내지 않습니다 . 선형화 를 시도하면이 트리로 끝납니다.
[2,0,0,0] -> 2 [0,0,0] -> 2 [0,0] -> 2 [0]
/ \ / \ / \
0 0 0
그러나 여전히 0
목록에 왼쪽이 있고 그것을 넣을 곳이 없습니다. 마찬가지로 [2, 0]
비선형 트리에는 빈 자식 스팟이 있으므로 유효한 트리 선형화도 아닙니다.
2
/ \
0
직무
정수 목록이 제공되면 가능한 적은 바이트를 사용하여 트리의 유효한 선형화 여부를 결정하십시오. 당신은 전체 프로그램이나 함수를 작성할 수 있습니다.
입력 : 음이 아닌 정수로 구성된 비어 있지 않은 목록입니다.
출력 : 목록이 트리의 선형화이면 참 값이고, 그렇지 않으면 거짓 값입니다.
테스트 케이스
Truthy[0]
[2, 0, 0]
[1, 1, 1, 1, 1, 0]
[3, 1, 0, 2, 0, 0, 0]
[2, 0, 2, 2, 0, 0, 2, 0, 0]
[3, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0]
[1, 5, 3, 0, 2, 1, 4, 0, 1, 0, 0, 2, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0]
거짓
[0, 1]
[2, 0]
[2, 0, 0, 0]
[1, 0, 1]
[3, 2, 1, 0]
[2, 0, 0, 2, 0, 0]
[4, 1, 0, 3, 0, 0, 0, 0]
[4, 2, 0, 3, 1, 0, 0, 0, 0, 0]
{X0@{+\(_{\}&}/|!}
내 생각 엔?