地址:http://oj.leetcode.com/problems/minimum-depth-of-binary-tree/
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.
思路:用队列来模拟,并记录每一层的节点个数。在某一层上当其左右子树均为null时候,它就是第一个找到的叶子节点,返回监测变量height。
参考代码:
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int minDepth(TreeNode *root) {
if(!root)
{
return 0;
}
int height = 0;
queue<TreeNode*>q;
q.push(root);
while(!q.empty())
{
++height;
int size = q.size();
while(size--)
{
TreeNode* pnode = q.front();
q.pop();
if(!pnode->left && !pnode->right)
{
return height;
}
if(pnode->left)
{
q.push(pnode->left);
}
if(pnode->right)
{
q.push(pnode->right);
}
}
}
}
};
python version
# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None
class Solution :# @param root, a tree node# @return an integerdef minDepth ( self , root ):if not root :return 0depth = 0q = [ root ]while q :depth += 1sz = len ( q )while sz :sz -= 1cur = q . pop ()if not cur . left and not cur . right :return depthif cur . left :q . insert ( 0 , cur . left )if cur . right :q . insert ( 0 , cur . right )