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

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

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

计算树的最大深度

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

class TreeNode:def __init__(self, value):self.val = valueself.left = Noneself.right = Nonedef max_depth(root):if not root:return 0left_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 0left_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。通过递归算法,我们能够有效地计算树的最大深度和最小深度。这两个指标在分析树结构时常常被用于评估树的形状和性质。通过理解算法的原理和实现,您将能够更好地处理树结构问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录将excel表无变形的弄进word里面来

之前关于这个问题记录过一篇文章: 将excel中的表快速复制粘贴进word中且不变形-CSDN博客 今天记录另外一种方法:举例表述,excel表如图: 按F12,出现“另存为...”对话框,选择“单个文件网页”,…

面向对象与面向过程的区别

面向对象 以对象为中心,把数据封装成为一个整体,其他数据无法直接修改它的数据,将问题分解成不同对象,然后给予对象相应的属性和行为。 面向过程 关注代码过程,直接一程序来处理数据,各模块之间有调用与…

C#_模拟鼠标操作

一、class class MouseHelper{[DllImport("user32.dll")]public static extern bool SetCursorPos(int X, int Y);[System.Runtime.InteropServices.DllImport("user32")]public static extern int mouse_event(int dwFlags, int dx, int dy, int dwData, …

大数据-之LibrA数据库系统告警处理(ALM-12055 证书文件即将过期)

告警解释 系统每天二十三点检查一次当前系统中的证书文件,如果当前时间距离过期时间不足告警阈值天数,则证书文件即将过期,产生该告警。告警阈值天数的配置请参考《管理员指南》的“配置证书即将过期告警阈值”章节。 当重新导入一个正常证…

oracle-buffer cache

段,区,块。 每当新建一个表,数据库会相应创建一个段。然后给这个段分配一个区。 一个区包含多个块。 区是oracle给段分配空间的最小单位。 块是oracle i\o的最小单位。 原则上,一个块包含多行数据。 dbf文件会被划分成一个一个…

Netty Review - 核心组件扫盲

文章目录 PreNetty Reactor 的工作架构图CodePOMServerClient Netty 重要组件taskQueue任务队列scheduleTaskQueue延时任务队列Future异步机制Bootstrap与ServerBootStrapgroup()channel()option()与childOption()ChannelPipelinebind()优雅地关闭EventLoopGroupChannleChannel…

今天遇到Windows 10里安装的Ubuntu(WSL)的缺点

随着技术的发展,越来越多开发者转向使用 Windows Subsystem for Linux(WSL)在 Windows 10 上进行开发,也就是说不用虚拟机,不用准备多一台电脑,只需要在Windows 10/11 里安装 WSL 就能体验 Linux 系统。因此…

C# Array和ArrayList有什么区别

在C#中,Array和ArrayList是集合类型,用于存储一组元素,但它们之间有几个关键区别: 类型安全: Array是类型安全的,意味着它只能存储一种特定类型的元素。例如,一个int[]数组只能存储int类型的元素…

邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

活动简介 “阿里云云原生 Serverless 技术实践营 ” 是一场以 Serverless 为主题的开发者活动,活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操,让开发者通过一个下午的时间增进对 Ser…

how to find gcc openbug

https://gcc.gnu.org/bugzilla/query.cgi?formatadvanced

最全的接口自动化测试思路和实战:【推荐】混合测试自动化框架(关键字+数据驱动)

混合测试自动化框架(关键字数据驱动) 关键字驱动或表驱动的测试框架 这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具,并可以用来“驱动"待测应用程序和数据的测试脚本代码,关键字驱动测试看上去与手工测…

mount /dev/mapper/centos-root on sysroot failed处理

今天发现centos7重启开不进去系统 通过查看日志主要告警如下 修复挂载目录 xfs_repair /dev/mapper/centos-root不行加-L参数 xfs_repair -L /dev/mapper/centos-root重启 reboot

云课五分钟-0Cg++默认版本和升级-std=c++17

前篇: 云课五分钟-0B快速排序C示例代码-注释和编译指令 视频: 云课五分钟-0Cg默认版本和升级-stdc17 文本: 在Linux系统中,可以通过以下步骤升级g: 打开终端,使用root权限或者sudo权限登录。输入以下命令…

基于灰狼算法(GWO)优化的VMD参数(GWO-VMD)

代码的使用说明 基于灰狼算法优化的VMD参数 代码的原理 基于灰狼算法(Grey Wolf Optimizer, GWO)优化的VMD参数(GWO-VMD)是一种结合了GWO和VMD算法的优化方法,用于信号分解和特征提取。 GWO是一种基于群体智能的优化…

lv11 嵌入式开发 ARM指令集中(伪操作与混合编程) 7

目录 1 伪指令 2 伪操作 3 C和汇编的混合编程 4 ATPCS协议 1 伪指令 本身不是指令,编译器可以将其替换成若干条等效指令 空指令NOP 指令LDR R1, [R2] 将R2指向的内存空间中的数据读取到R1寄存器 伪指令LDR R1, 0x12345678 R1 0x12345678 LDR伪指令可以将任…

【Python 千题 —— 基础篇】输出列表中的偶数

题目描述 题目描述 依次输出列表中所有的偶数。题中有一个包含数字的列表 [10, 39, 13, 48, 32, 18, 3, 204, 592, 11],使用 for 循环依次输出这个列表中所有的偶数。 输入描述 无输入。 示例 示例 ① 输出: 10 48 32 18 204 592输出描述 输出列…

小米真无线耳机 Air 2s产品蓝牙配对ubuntu20.04 笔记本电脑

小米真无线耳机 Air 2s产品蓝牙配对ubuntu20.04 笔记本电脑 1.我的笔记本是 22款联想拯救者y9000k,安装了双系统,ubuntu20.04。 2.打开耳机,按压侧面按钮2秒,指示灯显示白色闪烁。 3.打开ubunru20.04 系统右上角wifi的位置&…

【Go入门】 Go的http包详解

【Go入门】 Go的http包详解 前面小节介绍了Go怎么样实现了Web工作模式的一个流程,这一小节,我们将详细地解剖一下http包,看它到底是怎样实现整个过程的。 Go的http有两个核心功能:Conn、ServeMux Conn的goroutine 与我们一般编…

vulnhub靶场—matrix-breakout-2-morpheus靶机

一,实验环境 靶机ip:192.168.150.131攻击机ip:192.168.150.130 二,信息收集 arp-scan -l 扫描网段,寻找靶机ip 使用工具nmap进行端口扫描 nmap -A -T4 -p- 192.168.150.131 通过信息收集发现了靶机有80和81这两个…

HP惠普光影精灵7笔记本Victus by HP 16.1英寸游戏本16-d0000原装出厂Windows11.21H2预装OEM系统

下载链接:https://pan.baidu.com/s/1LGNeQR1AF1XBJb5kfZca5w?pwdhwk6 提取码:hwk6 可适用的型号: 16-d0111tx,16-d0112tx,16-d0125tx,16-d0127tx,16-d0128tx,16-d0129tx&#…