-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy path1361.Validate-Binary-Tree-Nodes.java
48 lines (37 loc) · 1.15 KB
/
1361.Validate-Binary-Tree-Nodes.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// https://leetcode.com/problems/validate-binary-tree-nodes/
// algorithms
// Medium (70.26%)
// Total Accepted: 5,314
// Total Submissions: 7,563
// beats 100.0% of java submissions
class Solution {
private static boolean isIntersect;
private static int meetNodeNum;
public boolean validateBinaryTreeNodes(int n, int[] leftChild, int[] rightChild) {
boolean[] isVisited = new boolean[n];
isIntersect = false;
meetNodeNum = 0;
recursive(0, isVisited, leftChild, rightChild);
if (isIntersect) {
return false;
}
return meetNodeNum == n;
}
public void recursive(int idx, boolean[] isVisited, int[] leftChild, int[] rightChild) {
if (isIntersect) {
return;
}
if (isVisited[idx]) {
isIntersect = true;
return;
}
meetNodeNum++;
isVisited[idx] = true;
if (leftChild[idx] != -1) {
recursive(leftChild[idx], isVisited, leftChild, rightChild);
}
if (rightChild[idx] != -1) {
recursive(rightChild[idx], isVisited, leftChild, rightChild);
}
}
}