[勇者闯LeetCode] 111. Minimum Depth of Binary Tree

来源:互联网 发布:linux卸载jdk1.5 编辑:程序博客网 时间:2024/06/05 17:11

[勇者闯LeetCode] 111. Minimum Depth of Binary Tree

Description

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.

Information

  • Tags: Tree | Depth-first Search | Breadth-first Search
  • Difficulty: Easy

Solution


  1. 一种是使用BFS寻找最接近根节点的叶节点,返回其深度
  2. 一种是使用DFS递归得到每个子树的最小深度

Python Code

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def minDepth(self, root):        """        :type root: TreeNode        :rtype: int        """        if root is None:            return 0        result = 0        layer = [root]        while layer:            next_layer = []            result += 1            for node in layer:                if not node.left and not node.right:                    return result                if node.left:                    next_layer.append(node.left)                if node.right:                    next_layer.append(node.right)            layer = next_layer        return result    def minDepthRecu(self, root):        if root is None:            return 0        if root.left and root.right:            return min(self.minDepthRecu(node.left), self.minDepthRecu(node.right)) + 1        else:            return max(self.minDepthRecu(node.left), self.minDepthRecu(node.right)) + 1
0 0