这题之前做的时候用的是DFS,代码如下:
class Solution {
public:
int minDepth(TreeNode* root) {
if(!root)
return 0;
int left=minDepth(root->left),right=minDepth(root->right);//求出左、右子树的最小深度
return (left && right) ? 1+min(left,right):1+left+right;
}
};
这次用BFS搞一下:
class Solution {
public:
int minDepth(TreeNode* root) {
if (root == NULL)return 0;
queue<TreeNode*>myqueue;
myqueue.push(root);
int res = 1;
while (!myqueue.empty())
{
int size = myqueue.size();
for (int i = 0; i < size; i++)
{
TreeNode*temp = myqueue.front();
myqueue.pop();
if (temp->left == NULL&&temp->right == NULL)
return res;
if (temp->left != NULL)
myqueue.push(temp->left);
if (temp->right != NULL)
myqueue.push(temp->right);
}
res++;
}
return res;
}
};