• Python算法——树的最大深度和最小深度


    Python中的树的最大深度和最小深度算法详解

    树的最大深度和最小深度是树结构中的两个关键指标,它们分别表示树的从根节点到最深叶子节点的最大路径长度和最小路径长度。在本文中,我们将深入讨论如何计算树的最大深度和最小深度,并提供Python代码实现。我们将详细说明算法的原理和步骤。

    计算树的最大深度

    树的最大深度是指从根节点到最深叶子节点的最大路径长度。我们可以通过递归遍历树的左右子树来计算树的最大深度。

    class TreeNode:
        def __init__(self, value):
            self.val = value
            self.left = None
            self.right = None
    
    def max_depth(root):
        if not root:
            return 0
        left_depth = max_depth(root.left)
        right_depth = max_depth(root.right)
        return 1 + max(left_depth, right_depth)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    计算树的最小深度

    树的最小深度是指从根节点到最近叶子节点的最小路径长度。和最大深度类似,我们同样可以通过递归遍历树的左右子树来计算树的最小深度。

    def min_depth(root):
        if not root:
            return 0
        left_depth = min_depth(root.left)
        right_depth = min_depth(root.right)
        return 1 + (min(left_depth, right_depth) if left_depth and right_depth else max(left_depth, right_depth))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例

    考虑以下二叉树:

    # 构建二叉树
    """
            1
           / \
          2   3
         / \
        4   5
    """
    root = TreeNode(1)
    root.left = TreeNode(2)
    root.right = TreeNode(3)
    root.left.left = TreeNode(4)
    root.left.right = TreeNode(5)
    python
    Copy code
    # 计算最大深度和最小深度
    max_depth_value = max_depth(root)
    min_depth_value = min_depth(root)
    
    print("树的最大深度:", max_depth_value)
    print("树的最小深度:", min_depth_value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    输出结果:

    树的最大深度: 3
    树的最小深度: 2
    
    • 1
    • 2

    这表示在给定的二叉树中,最大深度为3,最小深度为2。通过递归算法,我们能够有效地计算树的最大深度和最小深度。这两个指标在分析树结构时常常被用于评估树的形状和性质。通过理解算法的原理和实现,您将能够更好地处理树结构问题。

  • 相关阅读:
    Monocle 3 | 太牛了!单细胞必学R包!~(一)(预处理与降维聚类)
    Blender关键帧动画简明教程
    判断矩形与矩形、圆、三角形的相交问题
    关于3D-AIGC的调研与探讨
    PHP基础学习第十八篇(了解和学习PHP函数、$_GET和$_POST变量)
    网页按钮点击动画
    MFC 窗体插入图片
    线性结构和非线性结构
    详解连接池参数设置(边调边看)
    备战数学建模34-BP神经网络预测2
  • 原文地址:https://blog.csdn.net/weixin_46178278/article/details/134497533