Skip to content

Commit be4ffe7

Browse files
committed
feat: 添加多个二叉树相关算法的实现,包括层序遍历、翻转二叉树和中序遍历
1 parent 76039d9 commit be4ffe7

4 files changed

Lines changed: 260 additions & 0 deletions

File tree

acwing/test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import fmt
2+
3+
int main(){
4+
return 0;
5+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
* @lc app=leetcode.cn id=102 lang=cpp
3+
* @lcpr version=30204
4+
*
5+
* [102] 二叉树的层序遍历
6+
*/
7+
8+
// @lcpr-template-start
9+
using namespace std;
10+
#include <algorithm>
11+
#include <array>
12+
#include <bitset>
13+
#include <climits>
14+
#include <deque>
15+
#include <functional>
16+
#include <iostream>
17+
#include <list>
18+
#include <queue>
19+
#include <stack>
20+
#include <tuple>
21+
#include <unordered_map>
22+
#include <unordered_set>
23+
#include <utility>
24+
#include <vector>
25+
// @lcpr-template-end
26+
// @lc code=start
27+
/**
28+
* Definition for a binary tree node.
29+
* struct TreeNode {
30+
* int val;
31+
* TreeNode *left;
32+
* TreeNode *right;
33+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
34+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
35+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
36+
* right(right) {}
37+
* };
38+
*/
39+
class Solution {
40+
public:
41+
vector<vector<int>> levelOrder(TreeNode *root) {
42+
vector<vector<int>> res;
43+
if (!root)
44+
return res;
45+
46+
queue<TreeNode *> q;
47+
q.push(root);
48+
49+
while (!q.empty()) {
50+
int size = q.size();
51+
vector<int> line;
52+
while (size--) {
53+
auto t = q.front();
54+
line.push_back(t->val);
55+
q.pop();
56+
if (t->left)
57+
q.push(t->left);
58+
if (t->right)
59+
q.push(t->right);
60+
}
61+
res.push_back(line);
62+
line.clear();
63+
}
64+
return res;
65+
}
66+
};
67+
// @lc code=end
68+
69+
/*
70+
// @lcpr case=start
71+
// [3,9,20,null,null,15,7]\n
72+
// @lcpr case=end
73+
74+
// @lcpr case=start
75+
// [1]\n
76+
// @lcpr case=end
77+
78+
// @lcpr case=start
79+
// []\n
80+
// @lcpr case=end
81+
82+
*/
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
* @Author: tkzzzzzz6
3+
* @Date: 2026-04-23 15:04:03
4+
* @LastEditors: tkzzzzzz6
5+
* @LastEditTime: 2026-04-23 15:44:44
6+
*/
7+
/*
8+
* @lc app=leetcode.cn id=226 lang=cpp
9+
* @lcpr version=30204
10+
*
11+
* [226] 翻转二叉树
12+
*/
13+
14+
// @lcpr-template-start
15+
using namespace std;
16+
#include <algorithm>
17+
#include <array>
18+
#include <bitset>
19+
#include <climits>
20+
#include <deque>
21+
#include <functional>
22+
#include <iostream>
23+
#include <list>
24+
#include <queue>
25+
#include <stack>
26+
#include <tuple>
27+
#include <unordered_map>
28+
#include <unordered_set>
29+
#include <utility>
30+
#include <vector>
31+
// @lcpr-template-end
32+
// @lc code=start
33+
/**
34+
* Definition for a binary tree node.
35+
* struct TreeNode {
36+
* int val;
37+
* TreeNode *left;
38+
* TreeNode *right;
39+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
40+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
41+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
42+
* right(right) {}
43+
* };
44+
*/
45+
class Solution {
46+
public:
47+
TreeNode *invertTree(TreeNode *root) {
48+
if (!root)
49+
return root;
50+
51+
// 前序遍历
52+
// swap(root->left, root->right);
53+
// invertTree(root->left);
54+
// invertTree(root->right);
55+
// 后序遍历
56+
// invertTree(root->left);
57+
// invertTree(root->right);
58+
// swap(root->left, root->right);
59+
// // 中序遍历
60+
// invertTree(root->left);
61+
// swap(root->left, root->right);
62+
// invertTree(root->left);
63+
// // 层次遍历
64+
queue<TreeNode *> q;
65+
q.push(root);
66+
while (!q.empty()) {
67+
auto t = q.front();
68+
q.pop();
69+
swap(t->left, t->right);
70+
if (t->left)
71+
q.push(t->left);
72+
if (t->right)
73+
q.push(t->right);
74+
}
75+
return root;
76+
}
77+
};
78+
// @lc code=end
79+
80+
/*
81+
// @lcpr case=start
82+
// [4,2,7,1,3,6,9]\n
83+
// @lcpr case=end
84+
85+
// @lcpr case=start
86+
// [2,1,3]\n
87+
// @lcpr case=end
88+
89+
// @lcpr case=start
90+
// []\n
91+
// @lcpr case=end
92+
93+
*/
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*
2+
* @Author: tkzzzzzz6
3+
* @Date: 2026-04-22 00:17:58
4+
* @LastEditors: tkzzzzzz6
5+
* @LastEditTime: 2026-04-23 14:21:14
6+
*/
7+
/*
8+
* @lc app=leetcode.cn id=94 lang=cpp
9+
* @lcpr version=30204
10+
*
11+
* [94] 二叉树的中序遍历
12+
*/
13+
14+
// @lcpr-template-start
15+
using namespace std;
16+
#include <algorithm>
17+
#include <array>
18+
#include <bitset>
19+
#include <climits>
20+
#include <deque>
21+
#include <functional>
22+
#include <iostream>
23+
#include <list>
24+
#include <queue>
25+
#include <stack>
26+
#include <tuple>
27+
#include <unordered_map>
28+
#include <unordered_set>
29+
#include <utility>
30+
#include <vector>
31+
// @lcpr-template-end
32+
// @lc code=start
33+
/**
34+
* Definition for a binary tree node.
35+
* struct TreeNode {
36+
* int val;
37+
* TreeNode *left;
38+
* TreeNode *right;
39+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
40+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
41+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
42+
* };
43+
*/
44+
class Solution {
45+
public:
46+
vector<int> inorderTraversal(TreeNode *root) {
47+
vector<int> res;
48+
auto cur = root;
49+
stack<TreeNode *> st;
50+
51+
while (cur || !st.empty()) {
52+
if (cur) {
53+
st.push(cur);
54+
cur = cur->left;
55+
} else {
56+
cur = st.top();
57+
st.pop();
58+
res.push_back(cur->val);
59+
cur = cur->right;
60+
}
61+
}
62+
return res;
63+
}
64+
};
65+
// @lc code=end
66+
67+
/*
68+
// @lcpr case=start
69+
// [1,null,2,3]\n
70+
// @lcpr case=end
71+
72+
// @lcpr case=start
73+
// []\n
74+
// @lcpr case=end
75+
76+
// @lcpr case=start
77+
// [1]\n
78+
// @lcpr case=end
79+
80+
*/

0 commit comments

Comments
 (0)