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

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)

计算树的最小深度

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

python 复制代码
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))

示例

考虑以下二叉树:

python 复制代码
# 构建二叉树
"""
        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)

输出结果:

markup 复制代码
树的最大深度: 3
树的最小深度: 2

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

相关推荐
CoderCodingNo7 小时前
【NOIP】2011真题解析 luogu-P1003 铺地毯 | GESP三、四级以上可练习
算法
晓晓hh7 小时前
JavaSE学习——迭代器
java·开发语言·学习
iFlyCai7 小时前
C语言中的指针
c语言·数据结构·算法
Laurence7 小时前
C++ 引入第三方库(一):直接引入源文件
开发语言·c++·第三方库·添加·添加库·添加包·源文件
查古穆8 小时前
栈-有效的括号
java·数据结构·算法
再一次等风来8 小时前
近场声全息(NAH)仿真实现:从阵列实值信号到波数域重建
算法·matlab·信号处理·近场声全息·nah
汀、人工智能8 小时前
16 - 高级特性
数据结构·算法·数据库架构·图论·16 - 高级特性
大熊背8 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
kyriewen118 小时前
你点的“刷新”是假刷新?前端路由的瞒天过海术
开发语言·前端·javascript·ecmascript·html5
014-code8 小时前
String.intern() 到底干了什么
java·开发语言·面试