这道题和那个最大深度有相似之处,可以放到一起学习
思路:这道题只是需要一个特殊的跳出条件,就是一个节点的左右孩子如果都是空的话,实际上就已经符合要求了,我们就应该立即跳出,结束程序,知道了这个之后就好办了。
代码如下:
/**
* 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 depth=0;
vector<int> ret;
queue<TreeNode*> node;
if(root!=NULL) node.push(root);
while(!node.empty())
{
int size=node.size();
vector<int> vec;
depth++;
while(size--)
{
TreeNode*p=node.front();
node.pop();
vec.push_back(p->val);
if(p->left)
node.push(p->left);
if(p->right)
node.push(p->right);
if(p->left==NULL&&p->right==NULL)
return depth;
}
}
return depth;
}
};