您的位置:首页 > 编程语言 > C语言/C++

Leetcode_minimum-depth-of-binary-tree (c++ and python version)

2014-03-19 11:56 411 查看
地址: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 integer    def minDepth(self, root):        if not root:            return 0        depth = 0        q = [root]        while q:            depth += 1            sz = len(q)            while sz:                sz -= 1                cur = q.pop()                if not cur.left and not cur.right:                    return depth                if cur.left:                    q.insert(0, cur.left)                if cur.right:                    q.insert(0, cur.right)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: