• 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。通过递归算法,我们能够有效地计算树的最大深度和最小深度。这两个指标在分析树结构时常常被用于评估树的形状和性质。通过理解算法的原理和实现,您将能够更好地处理树结构问题。

  • 相关阅读:
    【Tomcat】查询端口号占用
    LeetCode: 4. Median of Two Sorted Arrays
    数据结构简答题综合
    安卓应用 .9.png类型启动图/背景图
    ventory做U盘启动,使用vmware进行测试U盘系统盘是否制作成功
    网络安全技能差距的高成本
    014 Linux 线上高频使用以及面试高频问题——如何查找大文件并安全的清除?
    网络爬虫:如何有效的检测分布式爬虫
    windows启动项目端口被占用
    【JS】JavaScript入门笔记第三弹~
  • 原文地址:https://blog.csdn.net/weixin_46178278/article/details/134497533