8-树-二叉树的最大深度

这是树的第8篇算法,力扣链接。

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:3

这道题还是可以用层级遍历来解,每一层count++即可。

func maxDepth(root *TreeNode) int {count := 0if root == nil {return count}queue := []*TreeNode{root}for len(queue) > 0 {count++newQueue := []*TreeNode{}for _, node := range queue {if node.Left != nil {newQueue = append(newQueue, node.Left)}if node.Right != nil {newQueue = append(newQueue, node.Right)}}queue = newQueue}return count
}

当然,也可以深度优先遍历,递归的方式:

func maxDepth(root *TreeNode) int {if root == nil {return 0}left, right := maxDepth(root.Left), maxDepth(root.Right)if left > right {return left + 1} else {return right + 1}
}

迭代的方法也能做,不过要构建新对象记录深度。

func maxDepth(root *TreeNode) int {if root == nil {return 0}// 定义一个栈,用于存储节点以及对应的深度type StackNode struct {Node  *TreeNodeDepth int}// 初始化栈,先将根节点入栈stack := []StackNode{{Node: root, Depth: 1}}maxDepth := 0// 当栈不为空时,循环执行for len(stack) > 0 {// 出栈current := stack[len(stack)-1]stack = stack[:len(stack)-1]// 如果当前节点的深度大于已记录的最大深度,则更新最大深度if current.Depth > maxDepth {maxDepth = current.Depth}// 将当前节点的子节点入栈,深度为当前节点深度加1if current.Node.Left != nil {stack = append(stack, StackNode{Node: current.Node.Left, Depth: current.Depth + 1})}if current.Node.Right != nil {stack = append(stack, StackNode{Node: current.Node.Right, Depth: current.Depth + 1})}}// 返回记录的最大深度return maxDepth
}

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

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

相关文章

AIGC实战——归一化流模型(Normalizing Flow Model)

AIGC实战——归一化流模型 0. 前言1. 归一化流模型1.1 归一化流模型基本原理1.2 变量变换1.3 雅可比行列式1.4 变量变换方程 2. RealNVP2.1 Two Moons 数据集2.2 耦合层2.3 通过耦合层传递数据2.4 堆叠耦合层2.5 训练 RealNVP 模型 3. RealNVP 模型分析4. 其他归一化流模型4.1 …

PyTorch使用

前言 系统环境:win10 使用Anaconda,Anaconda的安装自行百度。 conda 23.7.4 目录 前言 创建虚拟环境 1、查看当前有哪些虚拟环境 2、创建虚拟环境pytorch 3、激活及关闭pytorch虚拟环境 4、删除pytorch虚拟环境 使用yolov5测试 1、切换至yolo…

MPLAB编译 dsPIC33FJ128GP710

安装IDE后需要安装Compile,不让会报错 Install MPLAB IDE https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide #2, Install Compiles 根据单片机选择不同的编译器 MPLABC30 v3.2

(4)【Python数据分析进阶】Machine-Learning模型与算法应用-回归、分类模型汇总

线性回归、逻辑回归算法应用请参考: https://codeknight.blog.csdn.net/article/details/135693621https://codeknight.blog.csdn.net/article/details/135693621本篇主要介绍决策树、随机森林、KNN、SVM、Bayes等有监督算法以及无监督的聚类算法和应用PCA对数据进行降维的算法…

Coreline Soft x Incredibuild

关于 Coreline Soft Coreline Soft 是一家专注于先进医疗人工智能成像软件技术的上市公司,致力于提高疾病诊断的准确性和效率。Coreline soft 成立于2012年,总部位于韩国首尔,目前 Coreline Soft 业务已向全球范围内扩展,在德国法…

关于服务器解析A记录和CNAME记录的分析

内容提要: 大致讲下理解,dns域名解析这一块 0 . 问题来源 最近搞了一个七牛云上传,然后需要配置融合cdn加速,也就是可以加速域名,中间有一部需要CNAME 域名,也就是将七牛云提供的域名CNAME一下,查阅资料其实就是起一个别名,好访问而已. 方便我们访问云存储,达到加速的效果. …

七个步骤教会你构建企业关键绩效指标体系

明确战略和目标 通常用平衡计分卡来建立关键绩效指标体系,完成各部门的关键绩效指标体系。有人力资源部牵头组织并汇总整理关键绩效指标,确定公司组织结构及部门职责、岗位职责,促进组织内上下级就设定指标的充分沟通。作为牵头组织者&#x…

贰[2],Xamarin生成APK

1,生成改为Release版本 2,选中****.Android项目 3,点击生成,选择存档 4,点击分发 5,选择临时 6,添加签名标识 7,选择对应的签名标识,点击另存为

大模型开发者必看:解决RAG系统开发中12大难题的终极指南

如何克服检索增强生成的关键难题 图源自 Barnett 等人的研究 工程化检索增强生成系统时的七大挑战 痛点 1:缺失内容痛点 2:关键文档被遗漏痛点 3:文档整合的长度限制 —— 超出上下文痛点 4:提取困难痛点 5:格式错误痛…

L1-039 古风排版-java

输入样例: 4 This is a test case输出样例: asa T st ih e tsice s import java.util.Scanner;public class Main { public static void main(String[] args) {Scanner scanner new Scanner(System.in);int xscanner.nextInt();scanner.nextLine();S…

On the Spectral Bias of Neural Networks论文阅读

1. 摘要 众所周知,过度参数化的深度神经网络(DNNs)是一种表达能力极强的函数,它甚至可以以100%的训练精度记忆随机数据。这就提出了一个问题,为什么他们不能轻易地对真实数据进行拟合呢。为了回答这个问题,研究人员使用傅里叶分析…

程序员为何宠爱电脑如命?揭秘背后的心理与实际原因

在科技发展的时代,程序员是现代社会中不可或缺的一群人。他们的工作离不开电脑,而有趣的是,很多程序员似乎对于关机这一行为心存抵触。为何程序员如此钟情于保持电脑的开启状态呢?这其中到底隐藏了怎样的心理和实际原因呢&#xf…