当前位置: 首页 > news >正文

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

相关文章:

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

Python中的树的最大深度和最小深度算法详解 树的最大深度和最小深度是树结构中的两个关键指标,它们分别表示树的从根节点到最深叶子节点的最大路径长度和最小路径长度。在本文中,我们将深入讨论如何计算树的最大深度和最小深度,并提供Python…...

46.全排列-py

46.全排列 class Solution(object):def permute(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 结果数组0ans[]nlen(nums)# 判断是否使用state_[False]*n# 临时状态数组dp_[]def dfs (index):# 终止条件if indexn:ans.appe…...

系列三、GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈

一、关系 GC算法(引用计数法、复制算法、标记清除算法、标记整理算法)是方法论,垃圾收集器是算法的落地实现。 二、4种主要垃圾收集器 4.1、串行垃圾收集器(Serial) 它为单线程环境设计,并且只使用一个线程…...

WPF中的虚拟化是什么

WPF(Windows Presentation Foundation)中的虚拟化是一种性能优化技术,它主要用于提高大量数据展示的效率。在WPF中,如果你有一个包含大量项的ItemsControl(例如ListBox、ListView或DataGrid等),…...

免费稳定几乎无门槛,我的ChartGPT助手免费分享给你

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。 概述 ChatGPT想必大家应该都不陌生了,大部分人或多或少都接触了,好多应该都是通过openAi的官方进行使用的,这个门槛对大部分人有点高,…...

奇瑞金融:汽车金融行业架构设计

拆借联合贷款abs...

milvus数据库分区管理

一、创建分区 在创建集合时,会默认创建分区_default。 自己手动创建如下: from pymilvus import Collection collection Collection("book") # Get an existing collection. collection.create_partition("novel")二、检测分…...

pytorch.nn.Conv1d详解

通读了从论文中找的代码,终于找到这个痛点了! 以下详解nn.Conv1d方法 1 参数说明 in_channels(int) – 输入信号的通道。 out_channels(int) – 卷积产生的通道。 kernel_size(int or tuple) - 卷积核的尺寸,经测试后卷积核的大小应为in_cha…...

大数据HCIE成神之路之数学(2)——线性代数

线性代数 1.1 线性代数内容介绍1.1.1 线性代数介绍1.1.2 代码实现介绍 1.2 线性代数实现1.2.1 reshape运算1.2.2 转置实现1.2.3 矩阵乘法实现1.2.4 矩阵对应运算1.2.5 逆矩阵实现1.2.6 特征值与特征向量1.2.7 求行列式1.2.8 奇异值分解实现1.2.9 线性方程组求解 1.1 线性代数内…...

音视频学习(十八)——使用ffmepg实现视音频解码

视频解码 初始化 视频常用的编解码器id定义(以h264和h265为例) // 定义在ffmpeg\include\libavcodec\avcodec.h AV_CODEC_ID_H264 AV_CODEC_ID_H265查找解码器:根据编解码id查看解码器 AVCodec* pCodecVideo avcodec_find_decoder(codec…...

nginx的GeoIP模块

使用场景 过滤指定地区/国家的IP,一般是国外IP禁止请求。 使用geoip模块实现不同国家的请求被转发到不同国家的nginx服务器,也就是根据国家负载均衡。 前置知识 GeoIP是什么? 官网地址 https://www.maxmind.com/en/home包含IP地址的地理位…...

mac控制台命令小技巧

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 hello伙伴们,作为忠实的mac骨灰级别的粉丝,它真的给我带来了很多效率上的提升。那作为接…...

Postman:API测试之Postman使用完全指南

Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。 Postman工具有Chrome扩展和独立客户端,推荐安装独立客户端。 Postman有个workspace的概念,workspace分personal和team类型…...

Flume学习笔记(3)—— Flume 自定义组件

前置知识: Flume学习笔记(1)—— Flume入门-CSDN博客 Flume学习笔记(2)—— Flume进阶-CSDN博客 Flume 自定义组件 自定义 Interceptor 需求分析:使用 Flume 采集服务器本地日志,需要按照日志…...

go的字符切片和字符串互转

Go 1.21 // 返回一个Slice,它的底层数组自ptr开始,长度和容量都是len func Slice(ptr *ArbitraryType, len IntegerType) []ArbitraryType // 返回一个指针,指向底层的数组 func SliceData(slice []ArbitraryType) *ArbitraryType // 生成一…...

所见即所得的动画效果:Animate.css

我们可以在集成Animate.css来改善界面的用户体验,省掉大量手写css动画的时间。 官网:Animate.css 使用 1、安装依赖 npm install animate.css --save2、引入依赖 import animate.css;3、在项目中使用 在class类名上animate__animated是必须的&#x…...

ERR:Navicat连接Sql Server报错

错误信息:报错:未发现数据源名称并且未指定默认驱动程序。 原因:Navicat没有安装Sqlserver驱动。 解决方案:在Navicat安装目录下找到sqlncli_x64.msi安装即可。 一键安装即可。 Navicat链接SQL Server配置 - MarchXD - 博客园 …...

python算法例10 整数转换为罗马数字

1. 问题描述 给定一个整数,将其转换为罗马数字,要求返回结果的取值范围为1~3999。 2. 问题示例 4→Ⅳ,12→Ⅻ,21→XⅪ,99→XCIX。 3. 代码实现 def int_to_roman(num):val [1000, 900, 500, 400,100, 90, 50, 40…...

springboot引入第三方jar包放到项目目录中,添加web.xml

参考博客&#xff1a;https://www.cnblogs.com/mask-xiexie/p/16086612.html https://zhuanlan.zhihu.com/p/587605618 1、在resources目录下新建lib文件夹&#xff0c;将jar包放到lib文件夹中 2、修改pom.xml文件 <dependency><groupId>com.lanren312</grou…...

大数据研发工程师课前环境搭建

大数据研发工程师课前环境搭建 第一章 VMware Workstation 安装 在Windows的合适的目录来进行安装&#xff0c;如下图 1.1 双击打开 1.2 下一步&#xff0c;接受协议 1.3 选择安装位置 1.4 用户体验设置 1.5 快捷方式 已经准备好安装&#xff0c;点击安装 1.6 安装中 1.7 安装…...

Bubblewrap项目部署实战:从开发环境到Google Play发布的完整流程

Bubblewrap项目部署实战&#xff1a;从开发环境到Google Play发布的完整流程 【免费下载链接】bubblewrap Bubblewrap is a Command Line Interface (CLI) that helps developers to create a Project for an Android application that launches an existing Progressive Web A…...

19c升级遇见错误,libclntsh.so.19.1和libasmclntsh19.so

错误内容&#xff1a;Details: [ ---------------------------Patching Failed--------------------------------- Command execution failed during patching in home: /oracle/app/19.3.0/grid, host: efb01. Command failed: /oracle/app/19.3.0/grid/OPatch/opatchauto a…...

RoPE → Attention 完整

好的&#xff0c;我帮你把之前的 “Transformer 输入 → RoPE → Attention” 全流程整理成一个完整的、连贯的文档。每一步都包含 数学表达 PyTorch 示例代码&#xff0c;方便直接参考或实现。Transformer 前向 RoPE 全流程1️⃣ 输入&#xff1a;Token → Embedding 数学表…...

嵌入式系统中命令模式的应用与优化

1. 嵌入式系统中的误操作救赎之道在嵌入式开发中&#xff0c;参数配置误操作就像厨房里的盐罐打翻——一瞬间的失误可能导致整锅菜报废。上周我就遇到一个真实案例&#xff1a;某工业设备因为工程师误触"恢复出厂设置"&#xff0c;导致产线上30台设备参数全部重置&am…...

AVR单片机Vcc电压精确测量库MCUVoltage

1. 项目概述MCUVoltage 是一款专为嵌入式系统设计的轻量级电压监测库&#xff0c;其核心目标是在不增加任何外部硬件的前提下&#xff0c;精确测量微控制器供电电压&#xff08;Vcc&#xff09;。该库并非依赖外部分压电阻或专用ADC芯片&#xff0c;而是深度挖掘AVR系列MCU内部…...

LPD8806驱动库详解:SPI控制16位PWM LED灯带的嵌入式实践

1. LPD8806驱动库技术解析&#xff1a;面向嵌入式系统的PWM LED控制器深度实践1.1 芯片定位与工程价值LPD8806是凌阳&#xff08;Sunplus&#xff09;推出的16位恒流LED驱动IC&#xff0c;专为高密度RGB LED灯带、像素点阵及舞台灯光系统设计。其核心价值在于以极低成本实现精确…...

DBSCAN vs K-means:5个真实数据集对比,教你选对聚类算法

DBSCAN与K-means实战对比&#xff1a;5个真实数据集下的算法选择指南 第一次接触聚类分析时&#xff0c;我被一个简单问题困扰&#xff1a;为什么同样的数据用不同算法会得到截然不同的分组结果&#xff1f;记得当时用K-means处理地理坐标数据&#xff0c;结果把绵延的海岸线硬…...

【数据结构】二叉树小题

一、真题 1&#xff1a;前序 后序遍历反推中序&#xff08;2011 年&#xff09; 核心原理 二叉树的遍历规则&#xff1a; 前序遍历&#xff1a;根节点 → 左子树 → 右子树中序遍历&#xff1a;左子树 → 根节点 → 右子树后序遍历&#xff1a;左子树 → 右子树 → 根节点 …...

降AI率低至2%:SpeedAI科研小助手,论文过审省心利器

很多同学都在找能稳定过AIGC检测的工具&#xff0c;其实从 99.8% 到 14.9%&#xff1a;Paperxie AI 降重&#xff0c;破解论文 AIGC 检测的终极方案-CSDN博客这类分享里提到的核心需求&#xff0c;SpeedAI科研小助手都能更好地满足。一、写在前面&#xff1a;被AIGC检测支配的论…...

基于深度学习的田间杂草检测系统(YOLOv12/v11/v8/v5模型)(源码+lw+部署文档+讲解等)

摘要田间杂草的生长不仅会影响作物的产量和质量&#xff0c;还会对农田管理造成巨大挑战。传统的杂草检测方法多依赖人工观察&#xff0c;效率低下且受主观因素影响。为了提高田间杂草的检测效率与准确性&#xff0c;本文提出了一种基于深度学习的田间杂草检测系统&#xff0c;…...