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 min(int a, int b)
{
if(a < b)
return a;
return b;
}
void findMin(TreeNode* root, int& h, int& mini)
{
if(root == NULL)
return;
++h;
if(root -> left == NULL && root -> right == NULL)
{
//++h;
if(h < mini)
{
mini = h;
}
}
int tmp = h;
findMin(root -> left, h, mini);
h = tmp;
findMin(root -> right, h, mini);
}
int minDepth(TreeNode* root)
{
if(root == NULL)
return 0;
int h = 0;
int mini = 2100000;
findMin(root, h, mini);
return mini;
}
};