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.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int minDepth(TreeNode* root) {
queue<TreeNode*> nodes;
if(NULL==root)
return 0;
nodes.push(root);
int i=1;//记录深度
while(!nodes.empty())
{
int length=nodes.size();
int j=0;
while(j<length)
{
TreeNode* tmpNode=nodes.front();
if(!tmpNode->left && !tmpNode->right)
return i;//左右子树均为空,直接返回其深度
if(tmpNode->left)
nodes.push(tmpNode->left);
if(tmpNode->right)
nodes.push(tmpNode->right);
nodes.pop();
j++;
}
i++;
}
return i;
}
};
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if(NULL==root)
return 0;
int left=maxDepth(root->left);//先求左右子树的深度
int right=maxDepth(root->right);
return 1+(left>right?left:right);
}
};
最大最小深度的求法不一样。