Leetcode 111 二叉树最小深度

简介: Leetcode 111 二叉树最小深度

题目


给定一个二叉树,找出其最小深度。


最小深度是从根节点到最近叶子节点的最短路径上的节点数量。


说明: 叶子节点是指没有子节点的节点。


题解


DFS:

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

时间复杂度 O(N)


空间复杂度 O(H) H是树的高度


BFS

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

时间复杂度 O(N)


空间复杂度 O(N)


所有的节点要循环一遍

相关文章
|
2月前
二叉树oj题集(LeetCode)
二叉树oj题集(LeetCode)
|
2月前
|
算法
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
17 1
|
2月前
力扣面试经典题之二叉树
力扣面试经典题之二叉树
18 0
|
2天前
leetcode代码记录(二叉树的所有路径
leetcode代码记录(二叉树的所有路径
8 0
|
3天前
leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
7 0
|
3天前
leetcode代码记录(二叉树的最小深度
leetcode代码记录(二叉树的最小深度
7 0
|
3天前
leetcode代码记录(二叉树的最大深度
leetcode代码记录(二叉树的最大深度
6 0
|
3天前
leetcode代码记录(翻转二叉树
leetcode代码记录(翻转二叉树
5 0
|
3天前
leetcode代码记录(二叉树的层序遍历
leetcode代码记录(二叉树的层序遍历
6 0
|
3天前
|
算法
leetcode代码记录(二叉树递归遍历
leetcode代码记录(二叉树递归遍历
7 0

热门文章

最新文章