Skip to content

Commit 90c1a66

Browse files
author
kwu130
committed
feat(src): add 102-levelOrder, 102-levelOrder, 104-maxDepth
1 parent 404b669 commit 90c1a66

3 files changed

Lines changed: 169 additions & 0 deletions

File tree

‎src/102-levelOrder.cpp‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
//
2+
// Created by 1412 on 2025/12/1.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
#include "common.h"
7+
8+
using namespace std;
9+
using treeHelper::TreeNode;
10+
11+
class Solution {
12+
public:
13+
vector<vector<int>> levelOrder(TreeNode* root) {
14+
vector<vector<int>> res;
15+
if (root == nullptr) return res;
16+
queue<TreeNode*> q;
17+
q.push(root);
18+
while (!q.empty()) {
19+
size_t n = q.size();
20+
vector<int> level;
21+
while (n--) {
22+
TreeNode* node = q.front();
23+
q.pop();
24+
level.push_back(node->val);
25+
if (node->left != nullptr) q.push(node->left);
26+
if (node->right != nullptr) q.push(node->right);
27+
}
28+
res.push_back(level);
29+
}
30+
return res;
31+
}
32+
};
33+
34+
void test() {
35+
Solution s;
36+
int nullptr_value = -1;
37+
TreeNode* root = treeHelper::build({3, 9, 20, nullptr_value, nullptr_value, 15, 7}, nullptr_value);
38+
vector<vector<int>> expected = {
39+
{3},
40+
{9, 20},
41+
{15, 7}
42+
};
43+
vector<vector<int>> res = s.levelOrder(root);
44+
assert(res == expected);
45+
treeHelper::free(root);
46+
47+
root = treeHelper::build({1}, nullptr_value);
48+
expected = {{1}};
49+
res = s.levelOrder(root);
50+
assert(res == expected);
51+
treeHelper::free(root);
52+
53+
root = treeHelper::build({}, nullptr_value);
54+
expected = {};
55+
res = s.levelOrder(root);
56+
assert(res == expected);
57+
treeHelper::free(root);
58+
}
59+
60+
int main() {
61+
test();
62+
return 0;
63+
}

‎src/103-zigzagLevelOrder.cpp‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//
2+
// Created by 1412 on 2025/12/1.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
#include "common.h"
7+
8+
using namespace std;
9+
using treeHelper::TreeNode;
10+
11+
class Solution {
12+
public:
13+
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
14+
vector<vector<int>> res;
15+
if (root == nullptr) return res;
16+
queue<TreeNode*> q;
17+
q.push(root);
18+
bool left_to_right = true;
19+
while (!q.empty()) {
20+
size_t n = q.size();
21+
vector<int> level;
22+
while (n--) {
23+
TreeNode* node = q.front();
24+
q.pop();
25+
level.push_back(node->val);
26+
if (node->left != nullptr) q.push(node->left);
27+
if (node->right != nullptr) q.push(node->right);
28+
}
29+
if (!left_to_right) {
30+
ranges::reverse(level);
31+
}
32+
left_to_right = !left_to_right;
33+
res.push_back(level);
34+
}
35+
return res;
36+
}
37+
};
38+
39+
void test() {
40+
Solution s;
41+
int nullptr_value = -1;
42+
TreeNode* root = treeHelper::build({3, 9, 20, nullptr_value, nullptr_value, 15, 7}, nullptr_value);
43+
vector<vector<int>> res = s.zigzagLevelOrder(root);
44+
vector<vector<int>> expected = {
45+
{3},
46+
{20, 9},
47+
{15, 7}
48+
};
49+
assert(res == expected);
50+
treeHelper::free(root);
51+
52+
root = treeHelper::build({1}, nullptr_value);
53+
expected = {{1}};
54+
res = s.zigzagLevelOrder(root);
55+
assert(res == expected);
56+
treeHelper::free(root);
57+
58+
root = treeHelper::build({}, nullptr_value);
59+
expected = {};
60+
res = s.zigzagLevelOrder(root);
61+
assert(res == expected);
62+
treeHelper::free(root);
63+
}
64+
65+
int main() {
66+
test();
67+
return 0;
68+
}

‎src/104-maxDepth.cpp‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
//
2+
// Created by 1412 on 2025/12/1.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
#include "common.h"
7+
8+
using namespace std;
9+
using treeHelper::TreeNode;
10+
11+
class Solution {
12+
public:
13+
int maxDepth(TreeNode* root) {
14+
if (root == nullptr) return 0;
15+
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
16+
}
17+
};
18+
19+
void test() {
20+
Solution s;
21+
int nullptr_value = -1;
22+
TreeNode* root = treeHelper::build({3, 9, 20, nullptr_value, nullptr_value, 15, 7}, nullptr_value);
23+
assert(s.maxDepth(root) == 3);
24+
treeHelper::free(root);
25+
26+
root = treeHelper::build({1, nullptr_value}, nullptr_value);
27+
assert(s.maxDepth(root) == 1);
28+
treeHelper::free(root);
29+
30+
root = treeHelper::build({}, nullptr_value);
31+
assert(s.maxDepth(root) == 0);
32+
treeHelper::free(root);
33+
}
34+
35+
int main() {
36+
test();
37+
return 0;
38+
}

0 commit comments

Comments
 (0)