youngyangyang04 / leetcode-master-comment

用来做评论区
0 stars 0 forks source link

[Vssue]0111.二叉树的最小深度.md #74

Open youngyangyang04 opened 3 months ago

youngyangyang04 commented 3 months ago

https://www.programmercarl.com/0111.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.html

MayaSHM commented 1 month ago

可以运用和最大深度相似的代码,此时只有在叶子节点才进行深度的更新,我的python代码如下:

class Solution:
    def __init__(self):
        self.result = 10**9

    def minDepth(self, root: Optional[TreeNode]) -> int:
        # DFS,前序遍历求深度
        if not root:
            return 0
        self._get_min_depth(root, 1)
        return self.result

    def _get_min_depth(self, node, depth):
        # 左右子树只要有一个,说明当前都不是叶子节点
        # 因此self.result应该在没有左右节点时更新
        if not node:
            return
        if not node.left and not node.right:
            if self.result > depth:
                self.result = depth
                return    
        self._get_min_depth(node.left, depth + 1)
        self._get_min_depth(node.right, depth + 1)