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)


所有的节点要循环一遍

相关文章
|
8天前
二叉树oj题集(LeetCode)
二叉树oj题集(LeetCode)
|
8天前
|
算法
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
17 1
|
8天前
力扣面试经典题之二叉树
力扣面试经典题之二叉树
19 0
|
8天前
leetcode代码记录(二叉树的所有路径
leetcode代码记录(二叉树的所有路径
13 0
|
2天前
|
算法
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(下)
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
7 1
|
2天前
|
算法 C++
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(上)
数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
7 1
|
8天前
leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
10 0
|
8天前
leetcode代码记录(二叉树的最小深度
leetcode代码记录(二叉树的最小深度
11 0
|
8天前
leetcode代码记录(二叉树的最大深度
leetcode代码记录(二叉树的最大深度
11 0
|
8天前
leetcode代码记录(翻转二叉树
leetcode代码记录(翻转二叉树
9 0