week18-leetcode #111-MinimumDepthofBinaryTree
链接:https://leetcode.com/problems/minimum-depth-of-binary-tree/description/
Question
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
Solution
#include <queue>
using namespace std;
class Solution {
public:
int minDepth(TreeNode* root) {
int min_depth = -1;
if (root == NULL) return 0;
queue<TreeNode*> my_queue;
my_queue.push(root);
// 这个就是层数
root->val = 1;
// 标记是否添加结束
bool flag = false;
while (!my_queue.empty()) {
TreeNode* head = my_queue.front();
my_queue.pop();
// 可以结束了
if (head->left == NULL && head->right == NULL) {
min_depth = head->val;
break;
}
if (head->left) {
my_queue.push(head->left);
head->left->val = head->val+1;
}
if (head->right) {
my_queue.push(head->right);
head->right->val = head->val+1;
}
}
return min_depth;
}
};
思路:使用BFS的方式进行搜索,在节点的 val 字段上面存着节点的深度,然后按照BFS的方式将每个节点的 val 值等于父节点的值+1。在全局使用一个变量 min_path 来记录最小的路径。