美文网首页
27二叉树的最小深度

27二叉树的最小深度

作者: Jachin111 | 来源:发表于2020-08-10 12:45 被阅读0次

    给定一个二叉树,找出其最小深度。
    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定二叉树 [3,9,20,null,null,15,7],

     3
      / \
    9 20
        / \
      15 7

    BFS,当遇到第一个叶子节点的时候,该节点深度就是最小深度

    class Solution:
        def minDepth(self, root: TreeNode) -> int:
            if not root: return 0
            queue = [(1, root)]
            while queue:
                depth, node = queue.pop(0)
                if not node.left and not node.right:
                    return depth
                if node.left:
                    queue.append((depth + 1, node.left))
                if node.right:
                    queue.append((depth + 1, node.right))
    

    DFS,需要把所有的叶子节点的深度进行比较,才可以得到最终的最小深度

    class Solution:
        def minDepth(self, root: TreeNode) -> int:
            if not root: return 0
            stack = [(1, root)]
            min_depth = float('inf')
            while stack:
                depth, node = stack.pop()
                if not node.left and not node.right:
                    min_depth = min(min_depth, depth)
                if node.right:
                    stack.append((depth + 1, node.right))
                if node.left:
                    stack.append((depth + 1, node.left))       
            return min_depth 
    

    递归法

    class Solution:
        def minDepth(self, root: TreeNode) -> int:
            if(not root):return 0
            if(not root.left):return self.minDepth(root.right)+1
            if(not root.right):return self.minDepth(root.left)+1
            return min(self.minDepth(root.left),self.minDepth(root.right))+1
    

    来源:力扣(LeetCode)

    相关文章

      网友评论

          本文标题:27二叉树的最小深度

          本文链接:https://www.haomeiwen.com/subject/tlqwrktx.html