题目:

  1. 给定一个二叉树,找出其最小深度。
  2. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
  3. 说明: 叶子节点是指没有子节点的节点。
  4. 示例:
  5. 给定二叉树 [3,9,20,null,null,15,7],
  6. 3
  7. / \
  8. 9 20
  9. / \
  10. 15 7
  11. 来源:力扣(LeetCode
  12. 链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree
  13. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

答案:

时间:DFS

10min

  1. class Solution:
  2. def minDepth(self, root: TreeNode) -> int:
  3. if not root: return 0
  4. if not root.left: return self.minDepth(root.right)+1
  5. if not root.right: return self.minDepth(root.left)+1
  6. l=self.minDepth(root.left)
  7. r=self.minDepth(root.right)
  8. return min(l,r)+1

BFS:

相对来说,答对更容易,ans要加1


class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if not root: return 0

        de=[root]
        ans=0
        while de:
            new_q=[]
            for node in de:
                if not node.right and not node.left:
                    return ans+1
                if node.right:
                    new_q.append(node.right)
                if node.left:
                    new_q.append(node.left)
            ans+=1
            de=new_q
        return ans+1

要点:

1. 无左无右要返回1

2. 单侧的要单独搞

3. bfs肯定会快点

其他:

代码报错:无