1
class Solution:
2
def validateBinaryTreeNodes(
3
self, n: int, leftChild: List[int], rightChild: List[int]
4
) -> bool:
5

6
left_set = set(leftChild)
7
right_set = set(rightChild)
8

9
que = []
10

11
for i in range(n):
12
if i not in left_set and i not in right_set:
13
que.append(i)
14

15
if len(que) > 1 or len(que) == 0:
16
return False
17

18
graph = defaultdict(list)
19

20
for i in range(n):
21
graph[i] = []
22

23
if leftChild[i] != -1:
24
graph[i].append(leftChild[i])
25

26
if rightChild[i] != -1:
27
graph[i].append(rightChild[i])
28

29
visited = set()
30
visited.add(que[0])
31

32
while len(que) > 0:
33
item = que.pop(0)
34

35
children = graph[item]
36

37
for child in children:
38
if child not in visited:
39
que.append(child)
40
visited.add(child)
41
else:
42
return False
43

44
for i in range(n):
45
if i not in visited:
46
return False
47

48
return True

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0