利用BFS,遇到的第一个叶子节点的当前深度即为最小深度。
代码
class Solution {
public:
int minDepth(TreeNode *root) {
if(root==NULL)
return 0;
TreeNode *p;
p = root;
minNum = 0;
queue<TreeNode*> queue_push, queue_pop;
queue_pop.push(p);
while(!queue_pop.empty())
{
TreeNode *tempNode;
tempNode = queue_pop.front();
queue_pop.pop();
if(!tempNode->left&&!tempNode->right)
return ++minNum;
if(tempNode->left)
queue_push.push(tempNode->left);
if(tempNode->right)
queue_push.push(tempNode->right);
if(queue_pop.empty())
{
minNum++;
swap(queue_pop, queue_push);
}
}
return minNum;
}
private:
int minNum;
};