Number of Good Leaf Nodes Pairs LeetCode solution in C++

1
class Solution {
2
public:
3
int k, ans = 0;
4
int countPairs(TreeNode *root, int distance) {
5
k = distance;
6
cp(root, 0);
7
return ans;
8
}
9

10
vector<int> cp(TreeNode *root, int level) {
11
vector<int> v1;
12
if (root == NULL) {
13
return v1;
14
}
15
if (root->left == NULL && root->right == NULL) {
16
v1.push_back(level);
17
return v1;
18
}
19

20
v1 = cp(root->left, level + 1);
21
vector<int> v2 = cp(root->right, level + 1);
22
int a = v1.size();
23
int b = v2.size();
24

25
for (int i = 0; i < a; i++) {
26
for (int j = 0; j < b; j++) {
27
if (abs(v1[i] + v2[j] - (2 * level)) <= k) {
28
ans++;
29
}
30
}
31
}
32

33
int l = v2.size();
34
while (l--) {
35
v1.push_back(v2.back());
36
v2.pop_back();
37
}
38
return v1;
39
}
40
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0