首页 > 编程语言 >Python算法——树的最大深度和最小深度

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

时间:2023-12-26 10:31:41浏览次数:34  
标签:right Python depth 最小 算法 深度 root left

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)

计算树的最小深度

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

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
"""
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)

输出结果:

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

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

标签:right,Python,depth,最小,算法,深度,root,left
From: https://blog.51cto.com/u_16295743/8979884

相关文章

  • 关于密码哈希算法BCrypt的编码结果各部分意义分析及其他注意事项
    找到一个英文的解析:Thebcryptstandardmakesstoringsaltseasy-everythingitneedstocheckapasswordisstoredintheoutputstring.Theprefix"$2a$"or"2y"inahashstringinashadowpasswordfileindicatesthathashstringisabcr......
  • 在只基于长读段的算法中,通过将长读段比对到由这些长读段自己构建的de Bruijn图上,采用
    基于长读段的算法可以通过将长读段比对到由这些长读段自己构建的deBruijn图上来进行错误纠错。在这种算法中,可以采用以下策略进行错误纠错:1.比对路径评判:通过比对长读段到deBruijn图上的路径,可以得到多条比对路径。为了找到正确的比对路径用于纠错,可以采取两种规则来评判比对......
  • 进程调度算法--引阿秀学习笔记
    1.先来先服务First-comeFirst-serverd(FCFS)按照请求顺序进行调度,利于长作业,不利短作业,短作业等待前面长作业执行完毕才可执行,造成短作业等待时间长。2.短作业优先shortestjobfirst(SJF)按估计运行时间最短的作业顺序进行调度,长作业可能会饿死(假如一直有短作业到来)3.......
  • 基于短读段的算法在将短读段比对到长读段上并进行错误纠正时,主要采用以下几种方法
    基于短读段的算法在将短读段比对到长读段上并进行错误纠正时,主要采用以下几种方法:1.比对和纠错:将同一物种的短读段比对到长读段上,并利用能够比对上的、且错误率低的短读段来进行错误纠正[6]。这种方法通过比对短读段和长读段之间的相似性,识别出长读段中的错误位置,并进行错误纠正......
  • 基于短读段的算法中de Bruijn图在错误纠正中的应用
    ##基于短读段的算法中deBruijn图在错误纠正中的应用在基于短读段的组装和纠错方法中,deBruijn图被广泛应用于错误纠正过程中[1]。deBruijn图是一种基于k-mer的图结构,通过将短读段分割成等长的k-mer序列,将每个k-mer作为图中的节点,将相邻k-mer之间的连接关系表示为边[2]。在错误......
  • 长读段纠错算法综述
    长读段纠错算法综述 长读段纠错算法主要分为三种类型[6]: 基于短读段的算法:将同一物种的短读段比对到长读段上,并利用能够比对上且错误率低的短读段进行错误纠正。基于短读段组装的算法:将长读段比对到同一物种的短读段组装后的deBruijn图上,以此进行错误纠正。只基于长......
  • Go常见限流算法代码
    计数器法:https://gitee.com/lymgoforIT/golang-trick/tree/master/08-count-limit-rate令牌桶算法:https://gitee.com/lymgoforIT/golang-trick/tree/master/09-token-bucket-limiter漏桶算法:https://gitee.com/lymgoforIT/golang-trick/tree/master/10-leaky-bucket-limiter计数......
  • 基础算法之排序算法
    1.概述算法是一组定义了一系列步骤或操作,以解决特定问题或执行特定任务的明确指令集合。算法就是一种解决问题的步骤,就像是烹饪菜肴的食谱一样。想象你要做一道美味的披萨,你需要按照特定的顺序执行一系列步骤:准备面团、加入酱料、撒上配料,最后烤熟。这些步骤就是算法,它们告诉你该......
  • 代码随想录算法训练营第二天 | 239. 滑动窗口最大值,347.前 K 个高频元素
    一、239.滑动窗口最大值题目链接:LeetCode239.滑动窗口最大值学习前:思路:无学习后:自定义双端队列,实现push、pop、peek方法,使得队列单调非增。peek方法不变;当入队时,若当前元素比队尾元素大,则pop队尾,直到队列为空或当前元素不大于队尾元素;当出队时,若队列非空且队首元素和窗......
  • 近屿智能OJAC第六期AIGC星辰大海:大模型工程师与产品专家深度训练营已拉开序幕
    您想成为AIGC大模型领域的佼佼者吗? 近屿智能OJAC第六期AIGC星辰大海:大模型工程师与产品专家深度训练营已拉开序幕,上千名学员已经实现转行、跳槽、升职、加薪,还不赶快行动起来,这是专为您量身定制的AI大模型学习之旅! 一、现在0元报名,领取2天的试听课! 为了让更多的感兴趣的学员能够......