Skip to content

Commit d5c3b8b

Browse files
committed
to: 添加注释
1 parent 1d24095 commit d5c3b8b

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

src/tree/delete_nodes_and_return_forest.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,49 @@
1717
*/
1818
class Solution {
1919
public:
20+
// dfs函数用于遍历二叉树,并返回新的二叉树根节点
21+
// 参数to_delete_set表示需要删除的节点的值构成的集合
22+
// 参数res表示存放被删除的节点的左右子树所构成的森林
2023
TreeNode *dfs(TreeNode *root, unordered_set<int> &to_delete_set,
2124
vector<TreeNode *> &res) {
25+
// 如果当前节点为空,则返回空指针
2226
if (!root) {
2327
return nullptr;
2428
}
29+
// 递归遍历左子树和右子树
2530
root->left = dfs(root->left, to_delete_set, res);
2631
root->right = dfs(root->right, to_delete_set, res);
32+
// 如果当前节点的值在需要删除的节点的集合中
2733
if (to_delete_set.find(root->val) != to_delete_set.end()) {
34+
// 如果当前节点有左子树,则将左子树添加到res中
2835
if (root->left) {
2936
res.push_back(root->left);
3037
}
38+
// 如果当前节点有右子树,则将右子树添加到res中
3139
if (root->right) {
3240
res.push_back(root->right);
3341
}
42+
// 返回空指针,表示当前节点已被删除
3443
return nullptr;
3544
}
45+
// 如果当前节点的值不在需要删除的节点的集合中,则返回当前节点
3646
return root;
3747
}
48+
// delNodes函数用于删除给定二叉树中的一些节点,并返回被删除节点的左右子树所构成的森林
49+
// 参数root表示给定的二叉树的根节点
50+
// 参数to_delete表示需要删除的节点的值构成的数组
3851
vector<TreeNode *> delNodes(TreeNode *root, vector<int> &to_delete) {
52+
// 存放被删除的节点的左右子树所构成的森林
3953
vector<TreeNode *> res;
54+
// 将需要删除的节点的值构成的数组转换为集合
4055
unordered_set<int> to_delete_set(to_delete.begin(), to_delete.end());
56+
// 调用dfs函数遍历二叉树,并返回新的二叉树根节点
4157
root = dfs(root, to_delete_set, res);
58+
// 如果新的二叉树根节点非空,则将其添加到res中
4259
if (root) {
4360
res.push_back(root);
4461
}
62+
// 返回被删除节点的左右子树所构成的森林
4563
return res;
4664
}
4765
};

src/tree/maximum_depth_of_binary_tree.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
*/
1818
class Solution {
1919
public:
20+
// 计算二叉树的最大深度
2021
int maxDepth(TreeNode *root) {
2122
if (root == nullptr) {
2223
return 0;
2324
}
2425

26+
// 递归计算左子树和右子树的最大深度,取较大值加一即为整个二叉树的最大深度
2527
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
2628
}
2729
};

src/tree/search_in_a_binary_search_tree.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818
class Solution {
1919
public:
2020
TreeNode *searchBST(TreeNode *root, int val) {
21+
// 若根节点为空,返回nullptr
2122
if (root == nullptr)
2223
return nullptr;
24+
// 若根节点的值等于目标值,返回根节点
2325
if (root->val == val)
2426
return root;
27+
// 若目标值小于根节点的值,递归搜索左子树
28+
// 否则递归搜索右子树
2529
return searchBST(val < root->val ? root->left : root->right, val);
2630
}
2731
};

0 commit comments

Comments
 (0)