开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
1、写在前面
大家好,这里是【LeetCode刷题日志】。今天的两道题分别是:
- 二叉树的最大深度
- 二叉树的最小深度
2、内容
2.1、题目一
链接:104. 二叉树的最大深度 - 力扣(LeetCode)
(1) 描述
(2) 举例
(3) 解题
参考代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
// 利用广度优先遍历解题
class Solution {
public:
int maxDepth(TreeNode* root) {
int depth = 0; // 该二叉树的最大深度
queue<TreeNode*> que; // 定义一个工作队列
if(root) que.push(root); // 如果根结点不为空,则入队
else return depth; // 否则返回0
// 当队列为空时退出循环
while(!que.empty()) {
// 取到当前队列的长度size
int size = que.size();
// 依次遍历队列中的前size个元素,并进行扩展
for(int i = 0; i<size; i++) {
TreeNode* node = que.front();
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
// 深度要加一
depth++;
}
// 最后返回深度
return depth;
}
};
2.2、题目二
链接:111. 二叉树的最小深度 - 力扣(LeetCode)
(1) 描述
(2) 举例
(3) 解题
参考代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
// 使用广度优先遍历解题
class Solution {
public:
int minDepth(TreeNode* root) {
int result = 0; // 定义一个变量result保存层数,存储最终求取的最小深度
// 如果根结点为空,则返回 0
if(root == NULL) {
return result;
}
queue<TreeNode*> que; // 定义一个工作队列
que.push(root); // 将根结点入队
// 当队列为空时,退出循环
while(!que.empty()) {
int size = que.size(); // 保存当前队列的大小
result++;
for(int i = 0; i<size; i++) {
TreeNode* node = que.front(); // 取到队头元素
que.pop(); // 弹出队头元素
// 如果左孩子不为空,则入队
if(node->left != NULL) que.push(node->left);
// 如果右孩子不为空,则入队
if(node->right != NULL) que.push(node->right);
// 如果遇到左右孩子都为空的情况,则直接返回 result
if(node->left == NULL && node->right == NULL) return result;
}
}
return result; // 最后返回结果
}
};
3、写在最后
好的,今天就先刷到这里。