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

相关推荐
曲幽3 分钟前
FastAPI不止于API:手把手教你用Jinja2打造动态Web页面
python·fastapi·backend·jinja2·full stack·template engine·web development
禹凕8 分钟前
Python编程——进阶知识(多线程)
开发语言·爬虫·python
Ulyanov11 分钟前
基于Pymunk物理引擎的2D坦克对战游戏开发
python·游戏·pygame·pymunk
铉铉这波能秀12 分钟前
LeetCode Hot100数据结构背景知识之字典(Dictionary)Python2026新版
数据结构·python·算法·leetcode·字典·dictionary
蜡笔小马21 分钟前
10.Boost.Geometry R-tree 空间索引详解
开发语言·c++·算法·r-tree
IOsetting21 分钟前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
程序媛徐师姐27 分钟前
Python基于爬虫的网络小说数据分析系统【附源码、文档说明】
爬虫·python·python爬虫·网络小说数据分析系统·pytho网络小说数据分析系统·python爬虫网络小说·python爬虫的网络小说数据
唐梓航-求职中29 分钟前
编程-技术-算法-leetcode-288. 单词的唯一缩写
算法·leetcode·c#
仟濹31 分钟前
【算法打卡day3 | 2026-02-08 周日 | 算法: BFS】3_卡码网99_计数孤岛_BFS | 4_卡码网100_最大岛屿的面积DFS
算法·深度优先·宽度优先
清水白石00834 分钟前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存