111. Minimum Depth of Binary Tree

Posted ruruozhenhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了111. 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.

Note: A leaf is a node with no children.

Example:

Given binary tree [3,9,20,null,null,15,7],

    3
   /   9  20
    /     15   7

return its minimum depth = 2.

 

Approach #1: C++. [recursive]

/**
 * 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) {
        if (root == NULL) return 0;
        return helper(root, 1);
    }
private:
    int helper(TreeNode* root, int depth) {
        if (root->left != NULL && root->right != NULL)
            return min(helper(root->left, depth+1), helper(root->right, depth+1));
        else if (root->left != NULL) 
            return helper(root->left, depth+1);
        else if (root->right != NULL)
            return helper(root->right, depth+1);
        return depth;
    }
};

  

Approach #2: Java.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if (root == null) return 0;
        int left = minDepth(root.left);
        int right = minDepth(root.right);
        return (left == 0 || right == 0) ? left + right + 1 : Math.min(left, right) + 1;
    }
}

  

Approach #3: Python. [BFS]

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

from Queue import *
class Solution(object):
    def minDepth(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if root == None:
            return 0
        
        q = Queue()
        q.put(root)
        
        ans = 0
        
        while not q.empty():
            ans += 1
            k = q.qsize()
            
            for i in range(k):
                
                cur = q.get()

                if cur.left:
                    q.put(cur.left)
                if cur.right:
                    q.put(cur.right)
            
                if cur.left == None and cur.right == None:
                    return ans

  

 

以上是关于111. Minimum Depth of Binary Tree的主要内容,如果未能解决你的问题,请参考以下文章

111. Minimum Depth of Binary Tree

111.minimum depth of binary tree(E)

111. Minimum Depth of Binary Tree

111. Minimum Depth of Binary Tree

111. Minimum Depth of Binary Tree

[LeetCode]题解(python):111 Minimum Depth of Binary Tree