题目描述:
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.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its minimum depth = 2.
解题关键:
找到树的第一个叶子结点
解题思路:
通常遍历树可以用DFS或BFS进行,DFS可以遍历整棵树的所有节点,BFS则只需要找到第一个叶节点就可以停止搜索了,因此这一题可以采用BFS
class Solution {
public:
int minDepth(TreeNode *root) {
if(root == NULL)
return false;
queue<TreeNode *> q;
TreeNode *last, *now;
int depth = 1, size = 0;
last = now = root;
q.push(root);
while(!q.empty()) {
now = q.front();
q.pop();
size = q.size();
if (now->left)
q.push(now->left);
if (now->right)
q.push(now->right);
if (q.size() == size)
break;
if (now == last){
depth++;
if (q.size() != 0)
last = q.back();
}
}
return depth;
}
};